“选项”对话框 ->“调试”->“常规”
若要访问**“常规”页,请打开“工具”菜单并选择“选项”。 在“选项”对话框中,展开“调试”节点并选择“常规”**。 在此页中可以设置以下常规调试选项:
在删除所有断点之前询问
在完成**“删除所有断点”**命令前需要进行确认。一个进程中断时则中断所有进程
发生一个中断时,同时中断调试器连接到的所有进程。当异常跨越应用域或托管/本机边界时中断
在托管或混合模式调试中,如果满足以下条件,公共语言运行时可能会捕获跨越应用程序域边界或托管/本机边界的异常:1) 当本机代码使用 COM 互操作调用托管代码而托管代码却引发异常时。 请参阅COM 互操作介绍 (Visual Basic)。
2) 当在应用程序域 A 中运行的托管代码调用应用程序域 B 中的托管代码而应用程序域 B 中的代码却引发异常时。 请参阅对应用程序域进行编程。
3) 当代码使用反射调用一个函数而该函数却引发异常时。 请参阅.NET Framework 中的反射。
在第 2) 和 3) 条中,异常有时由 mscorlib 中的托管代码而不是公共语言运行时捕获。 此选项不影响在 mscorlib 捕获到异常时中断。
启用地址级调试
启用在地址级上进行调试的高级功能(**“反汇编”窗口、“寄存器”**窗口和地址断点)。如果源不可用,则显示反汇编
在你尝试调试源不可用的代码时自动显示**“反汇编”**窗口。启用断点筛选器
允许你在断点上设置筛选器,使其仅影响特定的进程、线程或计算机。启用异常助手
仅用于托管代码。 选择此选项时,托管异常将打开新的“异常助手”对话框而不是旧的“异常”对话框。 “异常助手”更详细,可提供关于异常的更好帮助。 请参阅异常助手。在未经处理的异常上展开调用堆栈
导致**“调用堆栈”**窗口将调用堆栈回滚到未经处理的异常发生之前的时间点。启用“仅我的代码”
启用此功能时,调试器仅显示和单步执行用户代码(“我的代码”),而忽略系统代码和其他经过优化或没有调试符号的代码。在变量窗口中显示非用户对象的所有成员(仅限 Visual Basic)
启用非用户代码(不是“我的代码”)中对象内的非公共成员的显示。启动时若没有用户代码则发出警告
如果在调试时启用“仅我的代码”,此选项会在没有用户代码(“我的代码”)的情况下发出警告。启用 .NET Framework 源代码单步执行
允许调试器单步执行 .NET Framework 源代码。 自动启用此选项会禁用“仅我的代码”,.NET Framework 符号将下载到缓存位置。 可以在**“选项”对话框“调试”类别下的“符号”**页中更改缓存位置。逐过程执行属性和运算符(仅限托管)
使调试器无法单步执行托管代码中的属性和运算符。启用属性求值和其他隐式函数调用
在变量窗口和**“快速监视”**对话框中打开属性的自动求值和隐式函数调用。在变量窗口中对对象调用字符串转换函数(仅限 C# 和 JavaScript)
在变量窗口中计算对象时,执行隐式字符串转换调用。 因此,结果将显示为字符串而不是类型名。 仅在 C# 代码中进行调试时适用。 此设置可以由 DebuggerDisplay 特性重写(请参阅使用 DebuggerDisplay 特性)。启用源服务器支持
指示 Visual Studio 调试器从实现 SrcSrv (srcsrv.dll) 协议的源服务器中获取源文件。 Team Foundation Server 和 Windows 的调试工具是实现协议的两个源服务器。 有关 SrcSrv 设置的更多信息,请参阅“Windows 的调试工具”文档。 此外,请参阅在 Visual Studio 调试器中指定符号 (.pdb) 和源文件。安全说明 由于读取 .pdb 文件会执行文件中的任意代码,因此请确保你信任此服务器。
将源服务器诊断消息打印到输出窗口
如果启用源服务器支持,此设置会打开诊断显示。允许源服务器中的部分信任程序集(仅限托管)
如果启用源服务器支持,此设置会重写不为部分信任的程序集检索源的默认行为。为断点和当前语句突出显示整个行
调试器突出显示断点或当前语句时,会突出显示整个行。要求源文件与原始版本完全匹配
指示调试器验证源文件是否与用于生成正在调试的可执行文件的源代码版本匹配。 如果版本不匹配,则会提示你查找匹配源。 如果未找到匹配源,则在调试过程中不会显示源代码。将所有输出窗口文本重定向到即时窗口
将通常显示在**“输出”窗口中的所有调试器消息改为发送到“即时”**窗口。在变量窗口中显示对象的原始结构
关闭所有对象结构视图自定义。 有关视图自定义的更多信息,请参阅显示自定义数据类型。在模块加载时取消 JIT 优化(仅限托管)
如果附加调试器,则在加载模块并编译 JIT 后,禁用托管代码的 JIT 优化。 禁用优化可能更易于调试某些问题,尽管这会降低性能。 如果正在使用“仅我的代码”,则禁用 JIT 优化会导致非用户代码显示为用户代码(“我的代码”)。启动时若无符号则发出警告(仅限本机)
选定后,如果尝试调试在调试器中没有对应符号信息的程序,系统将显示警告对话框。 请参阅No Symbolic Information Dialog Box。如果启动时禁用了脚本调试,则发出警告
选定后,如果在启动调试器时禁用了脚本调试,则会显示警告对话框。加载 DLL 导出
选定后,加载 DLL 导出表。 处理 Windows 消息、Windows 过程 (WindowProc)、COM 对象、封送或不具有其符号的任何 DLL 时,DLL 导出表中的符号信息将很有用。 读取 DLL 导出信息会占用一些系统开销。 因此,默认情况下此功能被禁用。若要查看 DLL 导出表中的可用符号,请使用 dumpbin /exports。 符号可用于任何 32 位系统 DLL。 从 dumpbin /exports 输出中,可以查看到精确的函数名,包括非字母数字字符。 这对于在函数上设置断点很有用。 DLL 导出表中的函数名在调试器的其他位置似乎被截断了。 调用将按调用顺序列出,当前函数(嵌套最深的函数)位于顶端。 有关详细信息,请参阅 dumpbin /exports。
自下而上显示并行堆栈关系图
控制**“并行堆栈”**窗口中堆栈的显示方向。如果写入的数据未更改值,则忽略 GPU 内存访问异常
如果数据未改变,则忽略在调试期间检测的争用条件。 有关详细信息,请参阅调试 GPU 代码。使用托管兼容模式
将默认调试引擎替换为旧版本,以支持以下方案:使用除 C#、VB 或 F# 之外,拥有自己的表达式计算器(包括 C++/CLI)的其他 .NET Framework 语言。
在执行混合模式调试时,为 C++ 项目启用“编辑并继续”(EnC)。
注意,选择托管兼容模式会禁用仅可在默认调试引擎中实现的一些功能。