调用堆栈中的“外部代码”是什么意思?
我在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