Mike Stall's .NET Debugging Blog
Notes on Managed Debugging, ICorDebug, and random .NET stuff
F5 vs. Ctrl-F5
In VS, F5 will launch your application under the debugger. Under the debugger, you'll hit...
Author: Mike Stall - MSFT Date: 09/22/2005
Process X can't tell if Process Y is being managed debugged.
From the mail bag: Is there a way to determine if a managed debugger is already attached to a given...
Author: Mike Stall - MSFT Date: 09/20/2005
Going from IL to Source
Question from the mail bag: I am trying to get some information on what I can do usefully with the...
Author: Mike Stall - MSFT Date: 09/19/2005
ICorDebug reentrancy
ICorDebug (ICD) in managed-only debugging mode does not need to be a reentrant API. In other words,...
Author: Mike Stall - MSFT Date: 09/19/2005
Types of Names
We've had some design discussions where we've come across 4 types of string names. These terms came...
Author: Mike Stall - MSFT Date: 09/14/2005
Out-of-band events and Mixed-mode debugging
Interop-debugging splits all debug events into "In-band (IB) " and "Out-of-band (OOB)". Inband...
Author: Mike Stall - MSFT Date: 09/13/2005
IL offset 0 vs. Native offset 0
Within a function, offset 0 into the native code stream corresponds to the very first native...
Author: Mike Stall - MSFT Date: 09/08/2005
MC++ / IJW codegen for Native structures in IL
When MC++ compiles an "unmanaged" class into IL (from IJW), it actually compiles the class into an...
Author: Mike Stall - MSFT Date: 09/07/2005
Managed C++ codegen for new, array manipulation, delete
Managed C++ (MC++) code generation is a cool accomplishment. I think it's another good testimony to...
Author: Mike Stall - MSFT Date: 09/03/2005
How can I tell if I'm interop-debugging?
Sometimes I'm debugging and I want to make sure that I'm actually interop-debugging and not...
Author: Mike Stall - MSFT Date: 09/03/2005
How to embed IronPython script support in your existing app in 10 easy steps
Previously, I added IronPython scripting support to a real existing application, MDbg (a managed...
Author: Mike Stall - MSFT Date: 09/01/2005
Adding IronPython scripting engine to Mdbg
I hear IronPython is a great managed scripting language to embed in other managed apps, so I thought...
Author: Mike Stall - MSFT Date: 08/31/2005
Sample Python script for Mdbg-Python extension
#----------------------------------------------------# Python Script for MDbg...
Author: Mike Stall - MSFT Date: 08/31/2005
Sample code for MDbg-IronPython extension
//----------------------------------------------------------------------------- // Simple extension...
Author: Mike Stall - MSFT Date: 08/31/2005
The importance of fortifying your subsystems.
In Writing Solid Code, Steve Maguire warns to "fortify your subsystems". This is especially...
Author: Mike Stall - MSFT Date: 08/30/2005
What's on my blog-todo list.
At this point, I've got what seems to be an endlessly long list of things I'd like to eventually...
Author: Mike Stall - MSFT Date: 08/28/2005
Sample code for PDB 2 XML tool
// NOTE this version is now out of date.// UPDATED VERSION IS AVAILABLE in the MDBG DISTRIBUTION.//...
Author: Mike Stall - MSFT Date: 08/25/2005
ICorDebugStepper and using ICorDebugStepper2::SetJMC
We added Just-My-Code (JMC) stepping (the ability to step through just your code and skip code...
Author: Mike Stall - MSFT Date: 08/23/2005
Size of Visual Studio
Ever wonder how large Visual Studio is? This public comment from the MSDN feedback gives some good...
Author: Mike Stall - MSFT Date: 08/23/2005
Sample code for Plagiarism Searcher tool
Here's my sample code for a tool to catch blog plagiarism that I described earlier. In retrospect,...
Author: Mike Stall - MSFT Date: 08/22/2005
Using the clipboard as input for console tools.
The clipboard can be a very handy source of input for certain console tools. I've written some...
Author: Mike Stall - MSFT Date: 08/22/2005
Sample code to execute MSN searches from C#
For kicks, I started writing a tool to use internet searches to automatically catch plagiarism. The...
Author: Mike Stall - MSFT Date: 08/21/2005
Tool to catch plagiarism
If you copy somebody else's blog entry verbatim, credit the original author and link back to the...
Author: Mike Stall - MSFT Date: 08/21/2005
Why is bad and easy intro for Cascading Style Sheets
I embarrassed to admit I hadn't used CSS before. I googled it, this tutorial came up, I found it...
Author: Mike Stall - MSFT Date: 08/19/2005
Auto-attach to child process is not supported in managed-debugging
Native-only debugging allows you to debug child processes. In other words, you can debug process A,...
Author: Mike Stall - MSFT Date: 08/16/2005
How should a generic method be displayed?
I've heard several different opinions about how the debugger should display a generic method in the...
Author: Mike Stall - MSFT Date: 08/12/2005
Nesting C#'s yield
C#'s yield keyword is sure neat, but I notice it only lets you yield a single item. It does not let...
Author: Mike Stall - MSFT Date: 08/12/2005
MDbg Sample is updated for Beta 2 and RTM
The Mdbg (a managed debugging written in pure C#) sample, which includes full source, has now been...
Author: Mike Stall - MSFT Date: 08/10/2005
You can't get a mixed-mode callstack from inprocess.
You can't get a full-mixed (both managed+ native) stack of a thread within your own process. You can...
Author: Mike Stall - MSFT Date: 08/10/2005
Harness that Attach instead of Launch
I've given sample code for MDbg-based harnesses that launch an app and then print all loaded modules...
Author: Mike Stall - MSFT Date: 08/08/2005
TextReader based off C# Yield
Let's say you want to implement a text stream (via TextReader) over an arbitrary data store. For...
Author: Mike Stall - MSFT Date: 08/08/2005
On why C#'s "abstract-override" is so cool:
Good language design usually results in a few well defined simple primitives that can be combined...
Author: Mike Stall - MSFT Date: 08/07/2005
Jonathan Keljo has started a blog!
Jonathan Keljo has started a blog! Jonathan is a Program Manager (PM) on the CLR (which means he...
Author: Mike Stall - MSFT Date: 08/04/2005
More caveats about #line
I posted here about how you can use #line in the C# compiler to associate C# code with some other...
Author: Mike Stall - MSFT Date: 08/03/2005
What my dog taught me about race conditions
I have a black Labrador named Sofie. She's about 2 and a half now, but still a puppy at heart....
Author: Mike Stall - MSFT Date: 08/01/2005
Simple example of an API design flaw.
Here’s a simple example of an API design flaw in ICorDebug. (ICorDebug is the API that Visual Studio...
Author: Mike Stall - MSFT Date: 08/01/2005
Correction: you can't reasonably instantiate your own ICorDebug
There’s a significant problem for 3rd-party hobbyists trying to implement their own ICorDebug: how...
Author: Mike Stall - MSFT Date: 07/31/2005
Simple harness to print exceptions in an app
Several people have asked how to write something that runs some executable under a harness and then...
Author: Mike Stall - MSFT Date: 07/28/2005
Using ICorDebugProcess::HasQueuedCallbacks
The native debugging APIs (like kernel32!WaitForDebugEvent), dispatch one debug event at a time. In...
Author: Mike Stall - MSFT Date: 07/27/2005
Debug support for arbitrary state-machines
I mentioned here that if your language compiles to IL, then you get free debugging support with...
Author: Mike Stall - MSFT Date: 07/27/2005
Source-level step-in is not well defined.
One of the things that causes us grief is that source-level step-in (F11 in VS) is not a...
Author: Mike Stall - MSFT Date: 07/26/2005