Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Step through the "managed to native transition" in Visual Studio?

While trying to answer this question I decided I need to step through the marshalling process by hand, in the debugger view.

Unfortunately, Visual Studio seems to jump right over all this interesting code. Here's the P/Invoke call to GetProfilesDirectory (a WinAPI function):

enter image description here

but after stepping into this call (F11), I don't find myself at FFF9BFD8; rather, I land right in the GetProfilesDirectory code:

enter image description here

There's also the [Managed to Native Transition] entry on the stack, hinting at the fact that Visual Studio had just jumped over a whole bunch of code.

How can I step through this transition?

like image 982
Roman Starkov Avatar asked Feb 21 '12 15:02

Roman Starkov


1 Answers

I'm surprised that no one has suggested that you show the external code in the debug window. If you right click on the [Native to Managed Transition] line and tick the Show External Code option, you will see exactly which methods are being called in the transition. This may give you a better idea. Here is an example:

Display Native to Managed Transition

You will then be able to double click on any (greyed out) line and a Disassembly page will open with the code. Another example:

enter image description here

like image 80
Sheridan Avatar answered Oct 31 '22 02:10

Sheridan