如何在Visual Studio中暂停代码?断点常见问题

莱斯利·理查森

您是否曾在代码中发现错误,并希望暂停代码执行以检查问题?如果你是一名开发人员,那么你很有可能已经或将多次经历这个问题。虽然这个问题的简单而贴切的答案是使用断点更长的答案是,VisualStudio实际上提供了多种断点和方法,可以根据上下文暂停代码!根据您在调试时可能遇到的不同场景,以下是在Visual Studio 2017中暂停代码并设置或管理断点的各种方法:

当我的应用程序运行时,我如何暂停检查可能包含错误的代码行?

暂停或“中断”执行以检查代码行的最简单方法是使用断点,一个工具,允许您在停止之前将代码运行到指定的行。断点是调试,这是检测并删除代码中的错误和bug的过程。

  1. 选择左边距或按要停止的代码行旁边的F9。
  2. 运行代码或点击继续(F5),程序将在执行之前在标记的位置暂停。

基本断点

在哪里可以管理和跟踪所有断点?

如果您在项目的不同区域或文件中设置了多个断点,则很难找到并跟踪它们。这个断点窗口是一个中心位置,您可以在其中查看、添加、删除和标记断点。如果此窗口尚不可见,则可以通过导航到Visual Studio中的顶部工具栏并选择调试->窗口->断点(或CTRL+ALT+B)。

断点窗口

如何仅在应用程序达到特定状态时停止执行?

条件断点是常规断点的扩展功能,允许您控制断点的位置和什么时候断点通过使用条件逻辑执行。如果在应用程序中手动重新创建特定状态以检查错误很困难或很耗时,条件断点是缓解该过程的好方法。条件断点对于确定应用程序中变量存储错误数据的状态也很有用。要创建条件断点,请执行以下操作:

  1. 在所需的行上设置断点。
  2. 将鼠标悬停在断点上并选择设置出现的齿轮图标。
  3. 检查条件选项。确保第一个下拉列表设置为条件语句.
  4. 输入有效的条件逻辑以确定何时发生断点,然后按enter键保存断点。

条件断点

调试时如何在特定迭代中中断循环?

您可以选择命中次数选项(请参见上文),以指定要在其中停止代码的特定循环迭代。无需手动逐次执行每个迭代,您可以在代码开始出现错误的相关迭代中使用点击计数中断。

命中次数

如果我知道一个函数的名称,但不知道它在代码中的位置,我如何在该函数的开头中断?

虽然这里可以使用标准断点,函数断点也可以用于在函数调用开始时中断。当您知道函数的名称但不知道其在代码中的位置时,可以在其他断点上使用函数断点。如果您有多个重载方法或多个不同项目中包含的函数,则函数断点是避免在每个函数调用位置手动设置断点的好方法。要创建函数断点,请执行以下操作:

  1. 选择调试->新断点->函数中断.
  2. 输入所需的函数名并按enter键。也可以通过断点窗口创建和查看这些断点。

功能断点

如何仅在特定对象的属性或值更改时中断?

如果您正在用C++进行调试,数据断点可用于在存储在特定内存地址的特定变量发生更改时停止执行。除了C++之外,可以通过监视窗口或断点窗口进行设置。有关数据断点的更多信息,请查看这篇关于Visual Studio 2017版本15.8中数据断点的博客文章。

数据断点

如果您正在调试托管代码,当前的解决方法和等效的数据断点替代方法是使用带有条件断点的对象ID。要执行此任务:

  1. 在中断模式下,右键单击所需对象并选择生成对象ID,这将为您提供内存中该对象的句柄。
  2. 向所需的setter添加一个条件断点,其中条件语句为“this==$[insert handle here]”
  3. 按下继续(F5),当所需实例的特定属性值更改时,您将中断setter。
  4. 在调用堆栈中,双击上一帧以查看正在更改特定对象属性的代码行。

当抛出已处理或未处理的异常时,如何中断?

当在运行时抛出异常时,通常会在控制台窗口和/或浏览器中给出有关它的消息,但随后必须设置自己的断点来调试问题。然而,Visual Studio还允许您引发指定异常时中断自动执行,无论是否正在处理。

您可以配置哪些抛出的异常将中断异常设置窗口。

异常中断

我可以在调用堆栈中设置断点吗?

如果您正在使用调用堆栈要检查应用程序的执行流或查看当前堆栈上的函数调用,可以使用调用堆栈断点在调用函数返回的行暂停执行。

  1. 打开调用堆栈(调试->Windows->调用堆栈,或CTRL+ALT+C)
  2. 在调用堆栈中,右键单击调用函数并选择断点–>插入断点(F9)。

调用堆栈断点

如何暂停特定汇编指令的执行?

如果您正在检查反汇编窗口要检查方法效率、无法解释的调试器行为,或者只想研究代码在转换为汇编代码时的幕后工作方式,反汇编断点可能对你有用。反汇编断点可用于在特定的汇编代码行中断,只有在代码执行已暂停时才能访问。要放置反汇编断点,请执行以下操作:

  1. 打开反汇编窗口(调试->Windows->反汇编,或Ctrl+Alt+D)
  2. 单击要打断的行的左边距(或按F9)。

拆卸断点

很高兴尝试这些断点吗?请在评论中告诉我们!

有关Visual Studio 2017断点的更多信息,请查看官方文件。如有任何问题或建议,请通过“帮助”>“发送反馈”>报告问题在IDE中。

0条评论

讨论结束。

反馈usabilla图标