Dot-Net
逐步完成 Visual Studio 中的“託管到本機轉換”?
在嘗試回答這個問題時,我決定我需要在調試器視圖中手動逐步完成編組過程。
不幸的是,Visual Studio 似乎跳過了所有這些有趣的程式碼。
GetProfilesDirectory這是對(WinAPI 函式)的 P/Invoke 呼叫:
但是在進入這個電話(F11)之後,我發現自己不在
FFF9BFD8;相反,我直接在GetProfilesDirectory程式碼中:
堆棧上還有一個
[Managed to Native Transition]條目,暗示 Visual Studio 剛剛跳過了一大堆程式碼。我怎樣才能逐步完成這個過渡?
我很驚訝沒有人建議您在調試視窗中顯示外部程式碼。如果你右擊
$$ Native to Managed Transition $$行並勾選 Show External Code 選項,您將準確看到在轉換中呼叫了哪些方法。這可能會給你一個更好的主意。這是一個例子:
然後,您將能夠點兩下任何(灰色)行,然後
Disassembly將打開一個包含程式碼的頁面。另一個例子:
在 Visual Studio 中,您不能這樣做,即無法將 VS 調試器切換到模式以查看託管到本機轉換期間發生的情況。
您可以嘗試 WinDbg + SOS/SOSEX,因為 WinDBG 不會向您隱藏這些類型的詳細資訊。但是,該部分是 .NET 或 Windows 內部抽象,因此即使您可以看到它,您可能也不會得到太多,因為要查看那裡實際發生的事情(除了程序集),您將需要 mscorlib、mscoreei 的私有符號,或 clr dll(pdb 文件)。



