设置断点

您可以与以下内容关联断点

  • 源代码文件和行
  • 函数
  • 地址
  • 抛出和捕获异常
  • 执行和分叉进程
  • 执行某些系统调用
  • 当应用程序正在运行时,特定地址上的一块内存更改
  • 发出 QML 信号
  • 抛出 JavaScript 异常

除非您为它指定布尔条件,否则断点会在每次应用程序达到其位置时中断应用程序。断点会评估表达式,应用程序只有在条件评估为 true 时才会停止。

未声明和已声明断点

断点有两种类型:未声明的和已声明的。未声明的断点表示一个任务,中断被调试的应用程序并将控制权转交给您。它有两个状态:挂起植入

未声明的断点作为会话的一部分存储,存在于应用程序是否正在调试中独立存在。它们在 断点预设 视图中列出,并在编辑器中使用 (《未声明断点》)图标列出,当它们引用代码中的位置时。

{Breakpoint Preset view}

当调试器启动时,调试后端从一组未声明断点中识别可能由调试应用程序处理的断点并声明它们以供其独家使用。已声明的断点列在运行调试器的 断点 视图中。此视图仅在调试器运行时存在。

当调试器声明断点时,未声明的断点会从 断点预设 视图中消失,并在 断点 视图中作为挂起的断点出现。

在各个时间,都会尝试将挂起的断点植入到调试进程中的。成功的植入可能会创建一个或多个植入的断点,每个断点都与调试断点的一个实际地址相关联。植入还可能会将编辑器中的断点标记从空行移动到下一行,该行生成实际的代码,例如。植入的断点图标没有沙漏覆盖。

当调试器结束时,其声明的断点(包括挂起和植入的),都将返回到未被声明的状态,并在断点预设视图中重新出现。

在调试应用程序执行过程中遇到植入式断点时,控制权返回给您。您可以选择检查中断应用程序的状态,或逐行或连续继续执行。

{Breakpoints view}

添加断点

要添加断点

  1. 可以通过以下方式之一添加新的断点
    • 在代码编辑器中,单击左侧边缘或按F9(在MacOS上为F8),使应用程序在某一行停止。
    • 断点预设视图中或断点视图中
      • 双击视图的空白部分。
      • 在视图中右键单击,并在上下文中选择添加断点
  2. 断点类型字段中,选择应用程序要停止的代码中的位置。

    {Add Breakpoints} dialog

取消选择启用复选框可以使断点临时不可用,就好像您已删除它一样,但保留断点的信息,以便您稍后重新启用。

其他选项取决于您选择的位置,如文件名和行号、地址、表达式或函数名。以下表格总结了高级选项。

选项
条件在到达断点之前进行评估以停止的条件,如果评估为true
忽略计数在应用程序停止之前的忽略断点的次数。
线程指定
路径确定在设置断点时如何指定路径
  • 使用引擎默认是调试引擎的首选设置。
  • 使用完整路径传递完整路径以避免几个模块包含同名文件时的歧义。这是CDB和LLDB的引擎默认设置。
  • 使用文件名仅传递文件名。这在源树的位置与构建模块时使用的位置不匹配时很有用。这是GDB的引擎默认设置,因为使用完整路径可能较慢。
模块指定要快速启动调试器(CDB、LLDB)的模块(库或可执行文件的库名或基本名称)以加快启动速度。
命令当应用程序停止时执行的命令。每行输入一个命令。GDB按您指定的顺序执行命令。
仅跟踪点通过跟踪点,您可以记录有关应用程序的信息,而无需添加日志语句或修改代码。您可以设置跟踪点的条件。
消息应用程序输出中显示的跟踪点消息。

移动断点

要移动断点

  • 将断点标记拖放到文本编辑器中的另一行。
  • 断点预设视图中或断点视图中,选择编辑选定的断点,并在行号字段中设置行号。

删除断点

要删除断点

  • 单击文本编辑器中的断点标记。
  • 断点预设视图中或断点视图中
    • 选择断点并按Delete
    • 在上下文中选择删除选定的断点删除选定的断点删除文件断点

启用和禁用断点

要临时禁用断点而不删除它并丢失相关的数据(如条件或命令)

  • 在文本编辑器中右键单击断点标记并选择禁用断点
  • 选择一个具有断点的行并按Ctrl+F9(macOS上为Ctrl+F8)。
  • 断点预设视图中或断点视图中
    • 选择断点并按Space
    • 在上下文菜单中选择禁用断点

在文本编辑器和视图中,空心断点图标表示禁用断点。要重新启用断点,可以使用上述任何方法。

除数据断点外,当调试应用重新启动时,它们保持启用或禁用状态。

设置数据断点

数据断点会在在指定地址读取或写入数据时停止应用。

要在地址处设置数据断点

  1. 断点预置断点视图中,在上下文菜单中选择添加断点
  2. 断点类型字段中,选择在固定地址访问数据时断点
  3. 地址字段中,指定内存块的地址。
  4. 选择确定

如果地址在局部变量表达式视图中显示,您可以在上下文菜单中选择在对象的地址处添加数据断点来设置数据断点。

当调试应用退出时,数据断点将禁用,因为在下次应用启动时,使用的地址可能会改变。如果确实希望数据断点再次激活,请手动重新启用它。

适用于某些Qt许可证。
了解更多。