设置断点
您可以与以下内容关联断点
- 源代码文件和行
- 函数
- 地址
- 抛出和捕获异常
- 执行和分叉进程
- 执行某些系统调用
- 当应用程序正在运行时,特定地址上的一块内存更改
- 发出 QML 信号
- 抛出 JavaScript 异常
除非您为它指定布尔条件,否则断点会在每次应用程序达到其位置时中断应用程序。断点会评估表达式,应用程序只有在条件评估为 true
时才会停止。
未声明和已声明断点
断点有两种类型:未声明的和已声明的。未声明的断点表示一个任务,中断被调试的应用程序并将控制权转交给您。它有两个状态:挂起
和 植入
。
未声明的断点作为会话的一部分存储,存在于应用程序是否正在调试中独立存在。它们在 断点预设 视图中列出,并在编辑器中使用 (《未声明断点》)图标列出,当它们引用代码中的位置时。
当调试器启动时,调试后端从一组未声明断点中识别可能由调试应用程序处理的断点并声明它们以供其独家使用。已声明的断点列在运行调试器的 断点 视图中。此视图仅在调试器运行时存在。
当调试器声明断点时,未声明的断点会从 断点预设 视图中消失,并在 断点 视图中作为挂起的断点出现。
在各个时间,都会尝试将挂起的断点植入到调试进程中的。成功的植入可能会创建一个或多个植入的断点,每个断点都与调试断点的一个实际地址相关联。植入还可能会将编辑器中的断点标记从空行移动到下一行,该行生成实际的代码,例如。植入的断点图标没有沙漏覆盖。
当调试器结束时,其声明的断点(包括挂起和植入的),都将返回到未被声明的状态,并在断点预设视图中重新出现。
在调试应用程序执行过程中遇到植入式断点时,控制权返回给您。您可以选择检查中断应用程序的状态,或逐行或连续继续执行。
添加断点
要添加断点
- 可以通过以下方式之一添加新的断点
- 在代码编辑器中,单击左侧边缘或按F9(在MacOS上为F8),使应用程序在某一行停止。
- 在断点预设视图中或断点视图中
- 双击视图的空白部分。
- 在视图中右键单击,并在上下文中选择添加断点。
- 在断点类型字段中,选择应用程序要停止的代码中的位置。
取消选择启用复选框可以使断点临时不可用,就好像您已删除它一样,但保留断点的信息,以便您稍后重新启用。
其他选项取决于您选择的位置,如文件名和行号、地址、表达式或函数名。以下表格总结了高级选项。
选项 | 值 |
---|---|
条件 | 在到达断点之前进行评估以停止的条件,如果评估为true 。 |
忽略计数 | 在应用程序停止之前的忽略断点的次数。 |
线程指定 | |
路径 | 确定在设置断点时如何指定路径
|
模块 | 指定要快速启动调试器(CDB、LLDB)的模块(库或可执行文件的库名或基本名称)以加快启动速度。 |
命令 | 当应用程序停止时执行的命令。每行输入一个命令。GDB按您指定的顺序执行命令。 |
仅跟踪点 | 通过跟踪点,您可以记录有关应用程序的信息,而无需添加日志语句或修改代码。您可以设置跟踪点的条件。 |
消息 | 在应用程序输出中显示的跟踪点消息。 |
移动断点
要移动断点
- 将断点标记拖放到文本编辑器中的另一行。
- 在断点预设视图中或断点视图中,选择编辑选定的断点,并在行号字段中设置行号。
删除断点
要删除断点
- 单击文本编辑器中的断点标记。
- 在断点预设视图中或断点视图中
- 选择断点并按Delete。
- 在上下文中选择删除选定的断点、删除选定的断点或删除文件断点。
启用和禁用断点
要临时禁用断点而不删除它并丢失相关的数据(如条件或命令)
- 在文本编辑器中右键单击断点标记并选择禁用断点。
- 选择一个具有断点的行并按Ctrl+F9(macOS上为Ctrl+F8)。
- 在断点预设视图中或断点视图中
- 选择断点并按Space。
- 在上下文菜单中选择禁用断点。
在文本编辑器和视图中,空心断点图标表示禁用断点。要重新启用断点,可以使用上述任何方法。
除数据断点外,当调试应用重新启动时,它们保持启用或禁用状态。
设置数据断点
数据断点会在在指定地址读取或写入数据时停止应用。
要在地址处设置数据断点
- 在断点预置或断点视图中,在上下文菜单中选择添加断点。
- 在断点类型字段中,选择在固定地址访问数据时断点。
- 在地址字段中,指定内存块的地址。
- 选择确定。
如果地址在局部变量或表达式视图中显示,您可以在上下文菜单中选择在对象的地址处添加数据断点来设置数据断点。
当调试应用退出时,数据断点将禁用,因为在下次应用启动时,使用的地址可能会改变。如果确实希望数据断点再次激活,请手动重新启用它。
适用于某些Qt许可证。
了解更多。