如何:单步执行“仅我的代码”

本主题适用于:

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

主题适用 主题适用

主题适用

仅限托管

主题适用

专业版、高级专业版和旗舰版

主题适用 主题适用

主题适用

仅限托管

主题适用

有时,您在调试过程中可能只希望查看自己编写的代码,而忽略其他代码(如系统调用)。 为此,可以使用“仅我的代码”调试。 “仅我的代码”将隐藏非用户代码,从而使这些代码不出现在调试器窗口中。 单步执行时,调试器逐句通过所有非用户代码,但不在其中停止。

为了区分用户代码和非用户代码,“仅我的代码”将查看三项内容:DBG 文件、PDB 文件和优化。

在标准调试版本中,关闭优化并为所有模块创建调试符号。 运行调试版本时,将这些模块视为用户代码。 如果调用的某个库函数已经优化并且没有调试符号,则该函数不是用户代码。 使用“仅我的代码”时,在库代码的断点处不会停止执行;通常情况下,我们并不想调试库代码。 在“断点”窗口中,这些断点显示时带有“禁用断点”图标。

若要查看所有代码并在所有断点处停止,可使用**“选项”**对话框关闭“仅我的代码”调试。

此外还有三个特性影响调试器确定是否为“我的代码”:DebuggerNonUserCodeAttribute 告知调试器,其所应用到的代码不是“我的代码”; DebuggerHiddenAttribute 对调试器隐藏代码,即使“仅我的代码”关闭; DebuggerStepThroughAttribute 告知调试器逐句通过其所应用的代码,而不是单步执行代码。

启用“仅我的代码”后,可在**“调试”菜单中选择“中断”,以在不显示“我的代码”处停止执行。 在这种情况下不显示任何代码。 此外,如果选择“单步”**命令,则编译器将会跳到“我的代码”的下一行。

调试器对编程方式的中断语句(例如 Visual Basic Stop 语句)进行区别处理。 即使启用了“仅我的代码”,调试器也总是在这些语句处中断。 在这种情况下,将会显示非用户代码,而不会将其隐藏,但是单步执行仍会带您跳出非用户代码,转到“我的代码”的下一行。

提示

设备项目不支持“仅我的代码”。

启用或禁用“仅我的代码”调试

  1. 在**“工具”菜单上选择“选项”**。

  2. 在“选项”对话框中,打开**“调试”节点,然后选择“常规”**。

  3. 选择或清除**“启用仅我的代码”**。

请参见

参考

DebuggerNonUserCodeAttribute

DebuggerHiddenAttribute

DebuggerStepThroughAttribute

概念

Execution 控件