February 2004 - Posts
This is a list of a few hints for using the native debugger's expression evaluator. These are documented elsewhere, but I have run into a fair number of people that don't know about them. Format specifiers. These are expression suffixes that alter the
Read More...
Today I looked at a virtual memory usage bug. I determined that the function to set a breakpoint on is {,,ntdll}_ZwAllocateVirtualMemory@24. This function is called by the heap APIs, and by the VirtualAlloc APIs.
Read More...
On Friday, a coworker emailed me a callstack that looked wrong. I sat down and looked at it. It turned out that the callstack was actually correct. Afterwards, I decided that it was time for a blog about bad native callstacks. Times when the debugger
Read More...
The Visual Studio .NET debugger supports debugging multiple types of code running in the same process. This is an important feature, and implementing it required huge changes in how the debugger works. Unfortunately, a bit too much of the implementation
Read More...
Many times in my life I have needed to debug a deadlock. You have one thread trying to acquire a critical section, and it can be a pain to determine which thread has it. Setup: Go get OS Symbols. Having OS symbols is a must, and will make your life easier
Read More...
As I am sure everyone reading this article knows, the CLR support 'properties', which is a way of making function calls look like a variable read or write. These have some problems for debuggers, mostly because in order to evaluate a property, the debugger
Read More...