Mike Stall's .NET Debugging Blog
Notes on Managed Debugging, ICorDebug, and random .NET stuff
Empty implementation of ICorDebugManagedCallback
I have to implement the ICorDebugManagedCallback interfaces. I wrote up a stub implementation (that...
Author: Mike Stall - MSFT Date: 08/01/2006
Lessons from political bloggers
Today on MS Campus, two successful political bloggers, conservative Stefan Sharkansky and liberal...
Author: Mike Stall - MSFT Date: 07/31/2006
Upcoming compiler lab
There's an upcoming Lang.Net Symposium (Compiler Lab++) on Microsoft Campus. Kathy and Thottam have...
Author: Mike Stall - MSFT Date: 07/27/2006
MDbg / ICorDebug forum is now available!
We've just created a new public forum for answering ICorDebug and MDbg questions. Check out:...
Author: Mike Stall - MSFT Date: 07/25/2006
Caveats about managed JIT-debugging
I received some questions in the mailbag about what Debugger.Launch actually does. Debugger.Launch...
Author: Mike Stall - MSFT Date: 07/24/2006
Resolving functions and func-eval syntax
I got a question about MDbg's func-eval syntax, which brings up a nice point about function...
Author: Mike Stall - MSFT Date: 07/21/2006
You can't cast from a pointer to a managed object in the debugger
During native debugging, it's common to cast a raw pointer value to a given type. Eg, in the...
Author: Mike Stall - MSFT Date: 07/20/2006
Coffee and the L2 Cache
My wife gave me a coffee grinder for my birthday. I've come a long way from instant coffee; I've now...
Author: Mike Stall - MSFT Date: 07/15/2006
#line hidden vs. DebuggerNonUserCode attribute
I got this great question from the mailbag: "[W]hat is the relation between the "# line hidden"...
Author: Mike Stall - MSFT Date: 07/12/2006
Experiences with FxCop and wrapping the native debug API
I'm writing some managed wrappers for the native-debugging API (I expect they'll eventually become...
Author: Mike Stall - MSFT Date: 07/12/2006
Conventions for passing the arguments to a process
A process's main() function gets an array of strings for the command line args. This is string[] in...
Author: Mike Stall - MSFT Date: 07/09/2006
Working on managed wrappers for Native Debugging API
FWIW, I've been working on some managed wrappers for the native debugging API...
Author: Mike Stall - MSFT Date: 07/05/2006
Managed vs. Native debugging APIs
FxCop has a great rule (UseManagedEquivalentsOfWin32Api) to tell you about managed APIs that exist...
Author: Mike Stall - MSFT Date: 07/03/2006
Debugger.Log vs. OutputDebugString
Both Debugger.Log and OutputDebugString have some key similarities: The both log string for...
Author: Mike Stall - MSFT Date: 07/03/2006
Debugger won't properly evaluate C#s base keyword
Public Service Announcement: You may have noticed that trying to evaluate members using C#'s 'base'...
Author: Mike Stall - MSFT Date: 06/29/2006
How to build Mdbg apps
I often publish little samples in this blog based off MDbg (which generally show off the debugging...
Author: Mike Stall - MSFT Date: 06/28/2006
Rant: Xml is Code
I need to rant: If one more person brags about their class library saying "you don't have to write a...
Author: Mike Stall - MSFT Date: 06/27/2006
Random ICorDebug trivia about debugging AppDomains
I've gotten some questions about how appdomains are handled at the ICorDebug level. Here's some...
Author: Mike Stall - MSFT Date: 06/26/2006
Source posted for snapshot tool
A while ago, I wrote a sample tool to gather snapshots of callstacks. After great delay, I've posted...
Author: Mike Stall - MSFT Date: 06/26/2006
Sample code for snapshot tool
//----------------------------------------------------------------------------- // Harness to...
Author: Mike Stall - MSFT Date: 06/26/2006
Thomas Lai is now blogging!
Thomas Lai is now blogging! Thomas works on the CLR Debugging Services, along with other bloggers...
Author: Mike Stall - MSFT Date: 06/20/2006
Saved by the blog
I just passed a milestone: I just had my first experience where I desperately needed an answer and...
Author: Mike Stall - MSFT Date: 06/19/2006
Random thoughts on Bill G transition plans
You've no doubt heard that "Bill Gates said Thursday he will transition from day-to-day...
Author: Mike Stall - MSFT Date: 06/16/2006
MSDN Wiki
You've probably already read about the MSDN Wiki Beta on Soma's blog. You can now add information to...
Author: Mike Stall - MSFT Date: 06/10/2006
Managed Stack Explorer
Check out: Managed Stack Explorer. It's a tool on CodePlex that lets you automatically get stack...
Author: Mike Stall - MSFT Date: 05/17/2006
Enc APIs aren't exposed through reflection
David Srbecky asked: Can a EnC capable compiler work on top of System.Refletion.Emit? (ie. If an...
Author: Mike Stall - MSFT Date: 05/08/2006
Using a Profiler for inspection
I've gotten some questions about using a profiler to do inspection a managed process. The best blogs...
Author: Mike Stall - MSFT Date: 04/22/2006
Felice Pollano: Integrating a debugger into Reflector
Felice Pollano is working on project to make merge Reflector (an IL-->C# decompiler) and Mdbg (a...
Author: Mike Stall - MSFT Date: 04/22/2006
Is "Module Breakpoint" ambiguous?
How would you define "Module Breakpoint"? 1) "Break when module is first loaded"2) "Break each time...
Author: Mike Stall - MSFT Date: 04/03/2006
Practical MDAs in MSDN magazine
Stephen Toub writes about MDAs in MSDN Magazine (see here). Whereas I focuses more on the platform...
Author: Mike Stall - MSFT Date: 03/31/2006
Some practice interview questions
Somebody in the comments asked for some practice interview questions for a development position. So...
Author: Mike Stall - MSFT Date: 03/31/2006
How did I ever live without it?
Here are some random software things I use that really change how I work. OneNote: Word is not a...
Author: Mike Stall - MSFT Date: 03/28/2006
Getting answers to questions
I've been getting a lot of individual questions (usually via the contact form) about random things I...
Author: Mike Stall - MSFT Date: 03/27/2006
Dbg vs. Pdb files
Somebody asked me about .Dbg vs. .Pdb files. Basically, .Dbg files are the predecessor's to .pdb...
Author: Mike Stall - MSFT Date: 03/26/2006
Stop the debuggee to poke at it
In ICorDebug, most operations are only available when the debuggee is stopped. (This was asked...
Author: Mike Stall - MSFT Date: 03/22/2006
The stop count and trivia
ICorDebug maintains a stop-count, and so if you call ICorDebugProcess::Stop() twice in a row, the...
Author: Mike Stall - MSFT Date: 03/22/2006
Trivia about Set-next-Statement (SetIp)
The poor-man's version of Set-Next-Statement (aka, SetIp) is to just forcibly set the instruction...
Author: Mike Stall - MSFT Date: 03/21/2006
What to expect when you Attach, Async-Break
Don't assume that if you have a thread doing a spin-wait, that you can attach / asynchronously-break...
Author: Mike Stall - MSFT Date: 03/21/2006
"Correct" may depend on your point of view
Correctness from the debugger's perspective is very different than correctness from the end-user's...
Author: Mike Stall - MSFT Date: 03/20/2006
Looking forward to the day when free wireless is just a given
I was bored in SeaTac Airport (my flight got delayed) and so I pulled out my laptop. I wasn't sure...
Author: Mike Stall - MSFT Date: 03/18/2006
Competing with the docs:
I was reading Charles Petzold's rule "Don't even try to compete with the Docs" and it reminded me of...
Author: Mike Stall - MSFT Date: 03/16/2006
Put a config file on your debuggers
VisualStudio.Net 2003 has a config file saying that it's for V1.1 CLR. If you write your own V1.1...
Author: Mike Stall - MSFT Date: 03/16/2006
Why doesn't MDbg use generics?
If you've looked at the MDbg sources, you'll notice it looks a lot like a V1.1 app. There are few to...
Author: Mike Stall - MSFT Date: 03/14/2006
What I'm reading now (Practical .NET2 and C#2)
I've been reading through "Practical .NET2 and C#2" (by Patrick Smacchia). I finished my previous...
Author: Mike Stall - MSFT Date: 03/14/2006
The JIT does dead-code elimination in Debuggable code
The desktop CLR JIT (at least x86) does dead-code elimination, even in debuggable code. This is...
Author: Mike Stall - MSFT Date: 03/13/2006
Being a CLR dev does not mean you know everything about the CLR
I find people often assume that just being a developer on the CLR means you somehow know everything...
Author: Mike Stall - MSFT Date: 03/13/2006
Passing env vars to the debuggee
Here are two main ways a debugger can pass an environment variable to the debuggee.1. Set the var in...
Author: Mike Stall - MSFT Date: 03/12/2006