本文档介绍了有关在 Visual Studio 中调试功能的常见问题。 它还会将调试任务或问题映射到 Visual Studio 调试器中的相关功能。 这些链接涵盖调试多线程应用程序、代码导航、内存泄漏、检查变量、使用断点、外部代码调试等任务或问题。 如果需要调试器功能的概述,请参阅 首先查看调试器。
断点
如何暂停运行代码以检查可能包含 bug 的代码行?
如何根据特定条件暂停运行代码?
设置正确的断点类型。 有关详细信息,请参阅 使用正确的断点类型。
如何在可配置条件下将信息记录到“输出”窗口,而无需修改或停止我的代码?
利用跟踪点,可以在可配置条件下将信息记录到“输出”窗口,而无需修改或停止代码。 有关详细信息,请参阅 在 Visual Studio 调试器 中使用跟踪点
管理和跟踪断点
使用 断点 窗口。 有关详细信息,请参阅 管理断点。
在引发特定处理或未处理的异常时暂停代码和调试
尽管异常帮助程序显示发生错误的位置,但如果要暂停和调试特定错误,可以 告知调试器在引发异常时中断。
从调用堆栈 设置断点
如果要在检查执行流或查看 调用堆栈 窗口中的函数时暂停和调试代码,请参阅 在“调用堆栈”窗口中设置断点。
在特定程序集指令处暂停代码
可以通过 从反汇编窗口设置断点来执行此操作。
导航代码
检查和可视化数据
如何在运行应用时检查变量的值?
使用 数据提示将鼠标悬停在变量上, 或 在“自动变量”和“局部变量”窗口中检查变量。
是否可以观察特定变量的更改值?
对变量设置监视。 有关详细信息,请参阅 设置对变量的监视。
如何查看调试器窗口太长字符串?
字符串可视化工具显示数据提示或调试器窗口太长字符串。 它还可以帮助你识别格式不正确的字符串。
Visual Studio 中的内置 字符串可视化工具 包括文本、XML、HTML 和 JSON 选项。如何查看大型集合对象?
使用 DataSet 可视化工具可以查看 DataSet、DataTable、DataView 或 DataViewManager 的内容。 使用 IEnumerable 可视化工具可以查看数组、列表等对象。有关详细信息,请参阅 表格可视化工具。
调试正在运行的应用
如何调试在本地或远程计算机上运行的应用、同时调试多个进程、调试未在 Visual Studio 中创建的应用,或调试未从 Visual Studio 启动的任何应用?
请参阅 附加到正在运行的进程。
如何重复附加到同一应用程序?
可以使用 重新附加到进程(Shift+Alt+P)轻松地在一键式中开始调试应用程序,而无需每次都通过“附加到进程”对话框。 请参阅 重新附加到进程
调试多线程应用程序
分析内存
外部代码调试
调试时是否只能看到用户代码?
仅“我的代码”是一项 Visual Studio 调试功能,可自动逐步执行对系统、框架和其他非用户代码的调用。 在“调用堆栈”窗口中,“仅我的代码”将这些调用折叠到 [外部代码] 帧中。 请参阅 仅调试仅我的代码的用户代码
如何查看或调试程序正在执行的原始程序集指令?
使用调试 > Windows > 反汇编中的反汇编窗口。 可以一次单步执行一个指令,甚至可以对单个程序集指令设置断点。
是否可以查看 .NET 库的源代码?
从调试 > 选项 > 符号启用Microsoft符号服务器,以便下载 .NET 库的符号和源。 请参阅 指定符号
如何从特定或共享位置或服务器加载 PDB?
从调试 > 选项 > 符号配置符号服务器。 请参阅 指定符号
如何从不加载特定的 PDB? 或者,如何始终加载一个?
在调试 > 选项 > 符号中配置包括和排除列表。
请参阅 指定符号
配置调试
如何配置调试器设置?
若要配置调试器选项和调试器项目设置,请参阅 调试器设置和准备。
如何自定义调试器中显示的信息?
你可能希望将对象类型以外的信息显示为不同调试器窗口中的值。 对于 C#、Visual Basic、F# 和 C++/CLI 代码,请使用 DebuggerDisplay 属性。 对于更高级的选项,还可以通过创建 自定义可视化工具来自定义 UI。 对于本机C++,请使用 NatVis 框架。