【问题标题】:What does Visual Studio consider "User Code"?Visual Studio 认为“用户代码”是什么?
【发布时间】:2012-03-25 21:07:34
【问题描述】:

假设我有一个抛出异常的函数。假设这个函数被第三方DLL调用,第三方DLL会处理我抛出的异常。

如果 Visual Studio 确定第三方 DLL 不是“用户代码”(如下图所示),则默认情况下它将停止我的异常,即使它稍后会得到处理。这样做并没有完全错误;它清楚地解释了异常未由用户代码处理。但是是什么让 Visual Studio 将某些 DLL 称为“用户代码”而其他的却不是?

我有一个理论认为,这是因为未加载符号,但列表中存在已加载符号但仍不被视为“用户代码”的模块。

【问题讨论】:

  • 对于其他人,在“调试”菜单上找到“模块”窗口,选择“Windows”,然后单击“模块”。用于跟踪正在使用的 .dll 的有用显示(我的代码不会调试,因为它使用的是 GAC 中的 lib 副本,而不是引用项目的输出),感谢您指出。跨度>

标签: visual-studio-2010 debugging visual-studio-debugging


【解决方案1】:

是的,如果没有 .pdb 文件,调试器无法判断它是否是用户代码。 MSDN article 中解释得相当好:

为了区分用户代码和非用户代码,Just My Code 着眼于三个方面:DBG 文件、PDB 文件和优化。

在标准调试版本中,优化被关闭,并且为所有模块创建调试符号。当您运行调试构建时,这些模块被视为用户代码。但是,如果我调用经过优化且没有调试符号的库函数,则它不是用户代码。 Just My Code 可防止执行在库代码中的断点处停止,这通常不是您对调试感兴趣的代码。在 Breakpoints 窗口中,这些断点将显示为 Disabled Breakpoint 图标。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 2018-09-12
  • 2019-01-14
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多