Setting a Watch on Wide Registers in VS
General-purpose registers can be watched from the watch window pretty much as regular variables: (the ‘$’ prefix is optional, but is recommended by MS – probably as means to minimize clashes with code...
View ArticleDebugging Handle Leaks
This is all well documented stuff and I won’t go into details – it’s here mostly for self reference (3rd time I had to chase this down in google). Steps are: (1) Install WDK to integrate the WinDbg...
View ArticleDebugging Memory Corruption II
Some years ago I shared a trick that let’s you call _CrtCheckMemory from the debugger anywhere, without re-compilation. The updated (as of VS2013) string to type at a watch window is:...
View ArticleAccelerating Debug Runs, Part 1: _NO_DEBUG_HEAP
(A more appropriate but even-less-catchy title might have been ‘accelerating runs from the debugger‘. As elaborated below, these two are not strictly equal). A common notion is that debug builds can...
View ArticleAccelerating Debug Runs, Part 2: _ITERATOR_DEBUG_LEVEL
A previous post discussed the Windows Debug Heap – with the main motivation being how to avoid it, as it is just empty, expensive overhead, and it isn’t clear why it is on by default in the first...
View ArticleTinkering with VS2015 (CTP 6)
Today I downloaded the latest VS bits and played around with the native debugger. It was a brief session and so would be the records of my impressions. J Universal CRT is here! And seems like a great...
View ArticleData Read Breakpoints – redux
The Problem ~5Y ago I blogged about data breakpoints. A hefty bit of the discussion was devoted to persistence of hardware breakpoints across a thread switch: all four implementations linked to assumed...
View ArticleChecking Memory Corruption from the debugger in 2016
It used to be something like {,,msvcr80d.dll}_CrtCheckMemory() But this trick requires quite a bit of adaptation to use on modern VS versions. First, the relevant module is now ucrtbased.dll – thanks...
View ArticleTracking the Current Directory from the debugger: RtlpCurDirRef
Some rogue code was changing our current directory from under our feet, and we needed to catch it in action. I was looking for a memory location to set a data breakpoint on. (Note: for the remainder of...
View ArticleMatlab’s mxArray Internals
Everything in Matlab is a Matrix. The scalar 4 is a 1×1 matrix with the single value 4. The string ‘asdf’ is a 4×1 (not a typo – it is in fact a column vector) matrix, with the 4 char values ‘a’, ‘s’,...
View Article