5

我正在一个大型 VS2010 解决方案(全部在 C# 中)中处理几个项目(A 和 B)。在很多情况下,项目 A 中的方法调用解决方案中的一个或多个我不负责的项目,而这些项目又调用到项目 B。当使用项目 A 中的调试器单步执行时,我被迫在我最终到达对项目 B 的调用之前,单步执行这些其他项目中的许多我不感兴趣的方法。此外,当退出项目 B 时,我必须一路返回调用堆栈在我回到项目 A 之前,那些无趣的方法。

我目前正在通过在项目A和B的入口和出口点设置断点来解决这个问题,但是我发现我的很多时间都花在了将这些断点设置在正确的位置上,我觉得我的生活会很多如果我可以禁用某些项目的逐步执行,则更容易。

我知道 DebuggerStepThroughAttribute,但是在我的情况下它的使用不可行,因为 (i) 我必须在很多地方添加它,并且 (ii) 我办公室里有兴趣单步执行此代码的人会不高兴.

有任何想法吗?

4

1 回答 1

14

是的,这可以通过启用“仅我的代码”并防止为您不关心的 DLL 加载符号来实现。

要启用仅我的代码:

  • 调试 » 选项和设置... » 常规 » 选中“仅启用我的代码(仅限托管)”。

要防止为 DLL 加载符号:

  • 调试 » 选项和设置... » 符号 » 单击“所有模块,除非排除”
  • 单击“指定排除的模块”
  • 添加要排除的模块的名称。调试应用程序时不会加载它们的符号。

现在,当您从项目 A 执行 F11 步入通过项目 C 的项目 B 时,只要您没有加载 C 的符号,步入将直接进入 B。

为确保不加载 C 的符号:

  • 开始调试
  • 到达加载 C 的点
  • 打开模块窗口 (Ctrl+Alt+U),滚动到 C 的条目
  • “符号状态”列应显示“加载已被包含/排除设置禁用”。
于 2010-10-07T05:34:35.387 回答