我在Visual Studio中調用了一個方法,並嘗試通過調用堆棧進行調試。調用堆棧中的「外部代碼」是什麼意思?
其中的一些行標記爲「外部代碼」。
這是什麼意思? .dll中的方法已被執行?
愚蠢的問題;但需要一個明確的答案。
我在Visual Studio中調用了一個方法,並嘗試通過調用堆棧進行調試。調用堆棧中的「外部代碼」是什麼意思?
其中的一些行標記爲「外部代碼」。
這是什麼意思? .dll中的方法已被執行?
愚蠢的問題;但需要一個明確的答案。
這些行符號信息目前不可用於Visual Studio Debugger
。換句話說,Debugger
無法從執行的行中檢索代碼。
我寫目前因爲符號信息,可下載或安裝。
欲瞭解更多信息,你可以閱讀:How to: Specify Symbol Locations and Loading Behavior
MSDN有更精確的信息,我的代碼「](https://msdn.microsoft.com/en-us/library/dn457346.aspx)。 C#和C++之間存在差異,並且存在符號信息的代碼仍然被認爲是外部代碼。 – m3tikn0b 2015-11-26 10:53:37
這些線不是你的當前已加載調試符號引用。
此代碼可能是CLR中的外部DLL或本機代碼的一部分。如果您知道它是哪個模塊,並且具有調試符號,則可以手動將它們加載到Visual Studio中。
您沒有代碼/符號的方法。像.NET框架或第三方程序集一樣。
您可以使用「調試」菜單上的「附加到進程」操作來調試宿主應用程序的運行實例。 (正在運行的進程具有調試符號.pdb文件)。
符號'外部代碼'是指所有不屬於'我的代碼'的東西。
是這樣的方式,可以在這裏How to: Use the Call Stack Window
在託管代碼MSDN文檔中描述,在默認情況下。 Call Stack窗口隱藏非用戶代碼的信息。 >出現以下符號而不是隱藏信息。
< [外部代碼]>
非用戶代碼是沒有任何代碼「我的代碼。」`
Your Code
是你可能已經想到了一切你是你自己寫的。所以在這個定義中,屬於外部dll的所有內容在調用堆棧的跟蹤中都被省略了。
此外,根據How to: Step Into Just My Code你有拒絕的調試器嘗試跟蹤非用戶代碼的可能性。
在這裏,你會發現什麼user code
實際上是解釋:
要區分非用戶代碼用戶代碼,僅我的代碼着眼於三個方面:DBG文件,PDB文件和優化。
[外部代碼]表示沒有可用於該dll的調試信息。
你可以做的是在Call Stack
窗口中點擊鼠標右鍵。然後選擇Show External Code
這將展開[外部代碼]並向您顯示正在調用的模塊。
一旦你得到它展開,你會看到DLL的被稱爲您可以通過點擊Symbol Load Information...
這將打開對話框,顯示在磁盤上的位置獲得磁盤上的位置
如果你想調試你需要得到.pdb
文件的DLL和放置在同一文件夾中.dll
這些外部檔案,這應該讓你Load symbols
(在上面Symbol Load Information
截圖2菜單),並開始調試。
More on getting .pdb files here.
And here's an actual example of EF .pdb being generated
希望這可以節省一些時間。
@AlvinWong:這不太對,我以前的代碼不在解決方案中。 Tigran說,我認爲這是缺乏符號信息的原因。 – 2012-07-24 10:57:09
關於這個問題的好帖子:http://blogs.msdn.com/b/zainnab/archive/2010/10/24/show-external-code-vstipdebug0031.aspx – 2014-11-26 13:57:17