Welcome to MSDN Blogs Sign in | Join | Help

Browse by Tags

All Tags » Whidbey (V2.0)   (RSS)

Breaking changes in ICorDebug from 1.1 to 2.0.

Here are some random notes about specific ICorDebug breaking changes between .NET v1.1 (Everett) and .NET 2.0 (Whidbey). (I came across these as I was cleaning out old documents in preparation for my upcoming move). This would have been more timely 2

Making Catch, Rethrow more debuggable.

I previously mentioned that catch / rethrow an exception impedes debuggability because the callstack is unwound at the catch block, and thus you lose the callstack in the debugger. On technique to fix this is to take advantage of Just-My-Code ,which was
Posted by jmstall | 3 Comments
Filed under:

VS 2003 can not debug .NET 2.0 apps.

Somebody asked here on the forums if you can use VS 2003 to debug .NET 2.0 (whidbey) apps. Unfortunately, the answer is no. VS 2003 can not debug .NET 2.0 apps. It is a restriction in the underlying .NET debugging services (see below) You can still use

VS2005 ships!

As you've probably already heard by now, VS2005 has shipped ! I've been using VS2005 for a while now (afterall, MDbg only runs on CLR 2. 0). Since I've been so involved in V2.0, I had forgotten how many people are still on V1.1 and V1.0. (update: fixed
Posted by jmstall | 4 Comments
Filed under:

ICorDebugStepper and using ICorDebugStepper2::SetJMC

We added Just-My-Code (JMC) stepping (the ability to step through just your code and skip code that's not yours) in Whidbey. I blogged a demo from the end-user's perspective here . In response to some email, I wanted to talk a little more about how a

Debug support for arbitrary state-machines

I mentioned here that if your language compiles to IL, then you get free debugging support with Visual Studio (and other managed debuggers). But what if you have an interpreter that can’t compile to IL? For example, suppose you load some state machine
Posted by jmstall | 7 Comments

Managed Debugging doesn’t support Fibers

Although managed-debugging definitely supports multi-threaded debuggees, it does not support debugging processes with fibers. The V2.0 CLR provides fiber support, however the ability to debug fiber-mode applications was cut . There are a few reasons that
Posted by jmstall | 9 Comments

Why you can’t do Edit-and-Continue on Dynamically generated code

I gave a brief example of how you can debug dynamically generated code (e.g., code generated via Reflection.Emit). Jamie Cansdale observed that you can’t use EnC with dynamically generated code. This was a conscious choice. Here are some reasons for it:

How to get a V2.0 ICorDebug object

I think the biggest breaking change in the ICorDebug API is how we deal with versioning. Managed debugging is done via the com-classic ICorDebug interface. In v1.0/v1.1, you cocreate to get an ICorDebug implementation, like so: ICorDebug * cor; hr = CoCreateInstance
Posted by jmstall | 10 Comments

Code Gen flags while Debugging

I ranted here that Debuggers shouldn’t affect behavior . V1.1 had some fundamental violations of this regarding code-gen. We’ve fixed this in v2.0 ICorDebug . This includes: 1) Ensuring that the mere presence of a debugger doesn’t affect codegen flags
Posted by jmstall | 11 Comments

Object Identity in Managed Debugging

The problem : Perhaps you’ve navigated through a global, local, or parameter while debugging, and then through some ugly series of object references (such as a hash table) to find an object reference. You want to be able to get some identity on that object
Posted by jmstall | 13 Comments

What's new in v2.0 CLR Debugging (ICorDebug)?

The CLR debugging services have added a lot of great things in v2.0. The main theme for us has been improving the Rapid Application Development (RAD) experience. Here’s a list of new features: 1) Edit-And-Continue . EnC is the ablity to edit code while
Posted by jmstall | 18 Comments

How can I debug Just My Code?

Sometimes developers want to debug just the code they wrote and not the 3 rd -party code (such as framework and libraries) that’s also inside their app. This becomes particularly useful when user and non-user code call back and forth between each other.
Posted by jmstall | 26 Comments
 
Page view tracker