常规调试选项

若要设置 Visual Studio 调试器选项,请选择 工具>选项,然后在 调试 下选择或取消选择 常规 选项旁边的框。 可以使用 工具还原所有默认设置,>导入和导出设置>重置所有设置。 若要重置设置的子集,请使用 导入和导出设置向导 保存设置,然后进行要测试的更改,然后导入保存的设置。

可以设置以下 常规 选项:

删除所有断点前询问:在完成“删除所有断点”命令之前需要确认

当一个进程中断时中断所有进程:当发生中断时,同时中断调试器附加到的所有进程。

当异常跨越 AppDomain 或托管/本机边界时中断:在托管或混合模式调试中,如果满足以下条件,公共语言运行时可能会捕获跨越应用程序域边界或托管/本机边界的异常

  1. 当本机代码使用 COM 互操作调用托管代码并且托管代码引发异常时。 请参阅 COM 互操作介绍

  2. 在应用程序域 1 中运行的托管代码调用应用程序域 2 中的托管代码时,应用程序域 2 中的代码将引发异常。 请参阅应用程序域编程

  3. 当代码使用反射调用函数时,该函数将引发异常。 请参阅反射

在条件 2 和 3 中,异常有时由 mscorlib 的托管代码捕获,而不是由公共语言运行时捕获。 此选项不影响在 mscorlib 捕获到异常时中断。

启用地址级调试:启用用于在地址级别进行调试的高级功能(反汇编 窗口、注册 窗口和地址断点)。

  • 如果源不可用,则显示反汇编:调试的代码来源不可用时,自动显示“反汇编”窗口。

启用断点筛选器:允许你在断点上设置筛选器,以便它们仅影响特定的进程、线程或计算机。

使用新的异常帮助程序:启用替换异常助手的异常帮助程序。 (从 Visual Studio 2017 开始支持异常帮助程序)

说明

对于托管代码,此选项以前称为 启用异常助手

启用“仅我的代码”:调试器仅显示并单步执行用户代码(“我的代码”),忽略优化或没有调试符号的系统代码和其他代码。

  • 启动时若没有用户代码则发出警告(仅限托管):如果在调试时启用“仅我的代码”,此选项会在没有用户代码(“我的代码”)的情况下发出警告。

启用 .NET Framework 源代码单步调试:允许调试器进入 .NET Framework 源代码进行单步调试。 启用此选项会自动禁用“仅我的代码”。 .NET Framework 符号将下载到缓存位置。 使用“选项”对话框>“调试类别”>“符号”页面可更改缓存位置

逐过程执行属性和运算符(仅适用于托管代码):使调试器无法单步执行托管代码中的属性和运算符。

启用属性计算和其他隐式函数调用:在变量窗口和 QuickWatch 对话框中启用属性和隐式函数调用的自动计算。

  • 仅对变量窗口(C# 和 JavaScript)中的对象调用字符串转换函数:在变量窗口中评估对象时执行隐式字符串转换调用。 结果显示为字符串而不是类型名称。 仅在 C# 代码中调试时适用。 此设置可以由 DebuggerDisplay 特性替代(请参阅使用 DebuggerDisplay 特性)。

启用源服务器支持:告知 Visual Studio 调试器从实现 SrcSrv (srcsrv.dll) 协议的源服务器获取源文件。 Team Foundation Server 和 Windows 调试工具是实现协议的两个源服务器。 有关 SrcSrv 设置的详细信息,请参阅 SrcSrv 文档。 此外,请参阅指定符号 (.pdb) 和源文件

重要

由于读取 .pdb 文件可以在文件中执行任意代码,因此请确保信任服务器。

  • 将源服务器诊断消息打印到“输出”窗口:启用源服务器支持后,此设置将启用诊断显示。

  • 允许部分信任程序集的源服务器(仅限托管):启用源服务器支持后,此设置将替代不检索部分信任程序集的源的默认行为。

  • 始终运行不受信任的源服务器命令而不提示:启用源服务器支持后,此设置将替代运行不受信任的命令时提示的默认行为。

启用源链接支持:告知 Visual Studio 调试器下载包含源链接信息的 .pdb 文件的源文件。 有关源链接的详细信息,请参阅 源链接规范

重要

由于源链接将使用 http 或 https 下载文件,因此请确保信任 .pdb 文件。

  • 回退到所有源链接请求的 Git 凭据管理器身份验证:启用源链接支持后,源链接请求身份验证失败,Visual Studio 随后会调用 Git 凭据管理器。

突出显示断点和当前语句(仅C++)的整个源行:当调试器突出显示断点或当前语句时,它将突出显示整个行。

要求源文件与原始版本完全匹配:告知调试器验证源文件是否与用于生成正在调试的可执行文件的源代码版本匹配。 当版本不匹配时,系统会提示你查找匹配的源。 如果未找到匹配的源,则调试期间不会显示源代码。

将所有输出窗口文本重定向到“即时”窗口:将通常出现在 “输出”窗口中的所有调试器消息发送到 “即时”窗口。

显示变量窗口中对象的原始结构:关闭所有对象结构视图自定义。 有关视图自定义的详细信息,请参阅 创建托管对象的自定义视图

在模块加载时抑制 JIT 优化(仅适用于托管代码):如果附加调试器,则在加载模块并编译 JIT 后,禁用托管代码的 JIT 优化。 禁用优化可以更轻松地调试某些问题,尽管牺牲了性能。 如果使用“仅我的代码”,取消 JIT 优化可能会导致非用户代码显示为用户代码(“我的代码”)。 有关详细信息,请参阅 JIT 优化和调试

为 ASP.NET(Chrome、Microsoft Edge 和 IE)启用 JavaScript 调试:为 ASP.NET 应用启用脚本调试器。 首次在 Chrome 中使用时,可能需要登录到浏览器以启用已安装的 Chrome 扩展。 禁用此选项可恢复为旧行为。

启用使用多目标 JavaScript 调试器在适用目标(需要调试重启)中调试 JavaScript 允许同时连接到浏览器和后端,从而能够直接从编辑器调试在客户端和服务器中运行的代码。

加载 dll 导出(仅限本地):加载 dll 导出表。 处理 Windows 消息、Windows 过程 (WindowProc)、COM 对象、封送或不具有其符号的任何 DLL 时,DLL 导出表中的符号信息将很有用。 读取 dll 导出信息涉及一些开销。 因此,此功能默认处于关闭状态。

若要查看 dll 的导出表中可用的符号,请使用 dumpbin /exports。 符号可用于任何 32 位系统 dll。 通过读取 dumpbin /exports 输出,可以看到确切的函数名称,包括非字母数字字符。 这对于在函数上设置断点很有用。 dll 导出表中的函数名称可能会在调试器中的其他位置被截断。 调用顺序列出,当前函数(最深层嵌套)位于顶部。 有关详细信息,请参阅 dumpbin /exports

显示并行堆栈关系图自下而上:控制在 并行堆栈 窗口中显示堆栈的方向。

如果写入的数据未改变值,则忽略 GPU 内存访问异常:如果数据未发生更改,则忽略调试期间检测到的争用条件。 有关详细信息,请参阅 调试 GPU 代码

使用托管兼容性模式:将默认调试引擎替换为旧版本以启用以下方案:

  • 你使用的是 C#、Visual Basic 或 F# 以外的 .NET 语言,该语言提供自己的表达式计算器(这包括C++/CLI)。

  • 希望在混合模式调试期间为C++项目启用“编辑并继续”。

说明

选择托管兼容性模式会禁用仅在默认调试引擎中实现的某些功能。 旧版调试引擎在 Visual Studio 2012 中被替换。

在针对可能不安全的进程使用自定义调试程序可视化工具时发出警告(仅适用于托管代码):如果使用自定义调试器可视化工具在调试的进程中运行代码,Visual Studio 会发出警告,因为该调试器可能运行不安全的代码。

启用 Windows 调试堆分配器(本机):启用 Windows 调试堆以改进堆诊断。 启用此选项会影响调试性能。

为 XAML启用 UI 调试工具:启动调试(F5)支持的项目类型时,将显示实时可视化树和实时属性浏览窗口。 有关详细信息,请参阅 调试时检查 XAML 属性。

  • 在实时可视化树中预览选定的元素:在 实时可视化树 窗口中,也选择了上下文中选定的 XAML 元素。

  • 显示应用程序中的运行时工具:显示正在调试的 XAML 应用程序主窗口中工具栏中的 实时可视化树 命令。

  • 启用 XAML 热重载:允许在应用运行时将 XAML 热重载功能与 XAML 代码配合使用。 (此功能以前称为“XAML 编辑并继续”)

  • 启用“仅我的 XAML”:从 Visual Studio 2019 版本 16.4 开始,“实时可视化树” 默认只显示分类为用户代码的 XAML。 如果禁用此选项,工具中会显示所有生成的 XAML 代码。

  • 在 Visual Studio 2019 版本 16.4 开始,当选择了某个元素时,选择模式将关闭。 应用内工具栏中的元素选择器按钮(启用选择)会在元素被选择后关闭。 如果禁用此选项,则元素选择将保持打开状态,直到再次单击应用内工具栏按钮。

  • 在文档保存时应用 XAML 热重载 从 Visual Studio 2019 版本 16.6 开始,保存文档时应用 XAML 热重载。

调试时启用诊断工具:调试时会显示 诊断工具 窗口。

调试时显示已用时间 PerfTip:在调试时,代码窗口显示给定方法调用的已用时间。

启用“编辑并继续”:调试时启用“编辑并继续”功能。

  • 启用本机编辑并继续:调试本机C++代码时,可以使用“编辑并继续”功能。 有关详细信息,请参阅 编辑并继续(C++)

  • 继续执行时应用更改(仅适用于本机代码):在从中断状态继续该过程时,Visual Studio 会自动编译并应用你所做的任何未完成的代码更改。 如果未选中,则可以选择使用 “调试 ”菜单下的“应用代码更改” 项来应用更改。

  • 针对过时代码发出警告(仅限本地环境):接收过时代码的警告。

调试时在编辑器中显示“运行到单击处”按钮:选中此选项后,在调试时,将会显示运行到单击处按钮。

调试停止时自动关闭控制台:告知 Visual Studio 在调试会话结束时关闭控制台。

启用快速表达式计算(仅限托管):允许调试器通过模拟简单属性和方法的执行来更快地进行计算。

在外部进程中加载调试符号(仅限本机)在调试时启用此内存优化

在调试器中中断时将 Visual Studio 引入前台, 在调试器中暂停时将 Visual Studio 切换到前台。

保持展开的数据提示保持打开状态,直到单击:选择此选项后,展开的数据提示将保持展开状态,直到单击它。

Visual Studio 早期版本中提供的选项

如果使用的是较旧版本的 Visual Studio,则可能存在一些其他选项。

为 UWP JavaScript 应用启用 Edge 开发人员工具(实验性):为 Microsoft Edge 中的 UWP JavaScript 应用启用开发人员工具。

为 ASP.NET启用旧版 Chrome JavaScript 调试器:为 ASP.NET 应用启用旧版 Chrome JavaScript 脚本调试器。 首次在 Chrome 中使用时,可能需要登录到浏览器以启用已安装的 Chrome 扩展。

启用异常助手:对于托管代码,启用异常助手。 从 Visual Studio 2017 开始,异常帮助程序替换了异常助手。

回溯未经处理异常的调用堆栈:使得 调用堆栈 窗口将调用堆栈回滚到发生未经处理的异常之前的状态。

在以管理员身份运行 Visual Studio 时使用实验性方法启动 Chrome JavaScript 调试:告诉 Visual Studio 尝试在 JavaScript 调试期间启动 Chrome 的新方法。

如果启动时没有符号则发出警告(仅适用于本机代码):当调试器没有所调试程序的符号信息时,显示一个警告对话框。

如果启动时禁用了脚本调试则发出警告:如果在启动调试器时禁用了脚本调试,则会显示警告对话框。

使用托管兼容性模式:选择此选项后,调试器将使用 Visual Studio 2010 托管调试器,这是调试C++/CLI 代码时所必需的。

使用本机兼容性模式:选择此选项后,调试器将使用 Visual Studio 2010 本机调试器而不是新的本机调试器。

  • 调试 .NET C++代码时使用此选项,因为新的调试引擎不支持评估 .NET C++表达式。 但是,启用本机兼容性模式会禁用许多依赖于当前调试器实现运行的功能。 例如,旧引擎缺少许多内置类型的可视化工具,例如 Visual Studio 2015 项目中 std::string。 在这些情况下,使用 Visual Studio 2013 项目获得最佳调试体验。

另请参阅