我在 Visual Studio 中调用一个方法,并尝试通过调用堆栈对其进行调试。
其中的一些行被标记为“外部代码”。
这到底是什么意思?.dll 中的方法已被执行?
愚蠢的问题; 但需要一个明确的答案。
我在 Visual Studio 中调用一个方法,并尝试通过调用堆栈对其进行调试。
其中的一些行被标记为“外部代码”。
这到底是什么意思?.dll 中的方法已被执行?
愚蠢的问题; 但需要一个明确的答案。
[外部代码] 表示该 dll 没有可用的调试信息。
您可以做的是在Call Stack
窗口中单击鼠标右键。然后选择Show External Code
这将展开 [External Code] 并显示正在调用的模块。
展开后,您将看到正在调用的 dll,您可以通过单击获取磁盘上的位置Symbol Load Information...
这将打开显示磁盘位置的对话框
如果您想调试这些外部文件,您需要获取.pdb
dll 的文件并放在与.dll
这应该允许您Load symbols
(上面屏幕截图 2 中的菜单Symbol Load Information
)并开始调试。
希望这可以节省您一些时间。
这些是符号信息当前不可用的行Visual Studio Debugger
。换句话说Debugger
,无法从执行的行中检索代码。
我现在写是因为可以下载或设置符号信息。
有关更多信息,您可以阅读:如何:指定符号位置和加载行为
符号“外部代码”指的是不属于“我的代码”的所有内容。
这就是这里的 MSDN 文档中描述的方式How to: Use the Call Stack Window
在托管代码中,默认情况下。调用堆栈窗口隐藏了非用户代码的信息。> 出现以下符号而不是隐藏信息。
<[外部代码]>
非用户代码是不是“我的代码”的任何代码。`
Your Code
就像您可能认为您自己编写的所有内容一样。因此,使用此定义,所有属于外部 dll 的内容都会在调用堆栈的跟踪中被省略。
此外,根据How to: Step Into Just My Code,您可以拒绝调试器尝试跟踪非用户代码。
在这里,您将找到实际情况的解释user code
:
为了区分用户代码和非用户代码,Just My Code 着眼于三个方面:DBG 文件、PDB 文件和优化。
您当前已加载的调试符号未引用这些行。
此代码可能是外部 DLL 的一部分,也可能是 CLR 内的本机代码。如果您知道它是哪个模块,并且有它们的调试符号,则可以手动将它们加载到 Visual Studio 中。
您可以使用“调试”菜单上的“附加到进程”操作来调试正在运行的主机应用程序实例。(运行过程有调试符号 .pdb 文件)。
您没有代码/符号的方法。像 .NET 框架或 3rd 方程序集。