发表人:ds 2022-05-10 08:26:35 最新回复: 2022-05-10 08:26:35
在软件开发中,开发人员为了解决程序存在的bug,除了通过程序的输出来判断执行过程之外,使用最多的方法就是软件调试。QtCreator包含非常丰富的调试功能,进入调试之后,会自动从代码编辑模式切换到调试模式,如图所示。要想程序能在调试模式下执行,程序必须是以“Debug”模式编译,否则程序无法调试,程序的编译模式可以通过构建套件选择区的构建方式来选择,一般有两种模式,分别是“Debug”和“Release”。调试模式下包括非常多的调试窗口,例如:执行堆栈、变量、寄存器、线程、模块等,可以从多个维度来查看程序执行情况。

图 调试程序
为了掌握程序执行过程中,每个变量和数据的执行变化,可以在指定的代码行处设置断点,如果程序执行到断点处,会自动停止执行,开发人员可以根据程序执行的上下文来判断执行是否出现错误。在QtCreator中设置断点有以下几种方法:
Ø
在源代码编辑器中设置断点:在源代码中将光标定位到指定的源代码行,在该代码行所在行号的左侧区域,点击鼠标右键会弹出一个菜单,如图XX所示,选择“Set Breakpoint at Line”,即可设置断点。断点设置之后,行号的左侧会出现一个红色的圆形标记,标识断点设置成功。
Ø
在“Debug”文件菜单上设置断点:将光标定位到指定行,点击文件菜单“Debug -> Toggle Breakpoint
F9”的按钮,即可设置断点。该操作的快捷键是“F9”,可以直接在指定行使用快捷键设置断点。
Ø
在断点管理窗口中设置断点:当程序进入调试模式之后,会出现断点管理窗口,如图所示,该窗口会显示当前所有断点的状态,在断点窗口中右键点击,弹出上下文菜单,点击“Add Breakpoint…”按钮,弹出增加断点对话框按钮,如图XX所示,根据对话框页面的说明增加断点即可。


图 调试窗口
调试窗口的管理是通过Views控制。在调试的功能条上点击Views,可以看到调试窗口的列表,该列表包含了全部的调试相关窗口,如图XX所示:

图 选择调试窗口
调试窗口包括:查看局部变量、查看寄存器、查看表达式、执行堆栈、执行控制、断点管理、查看线程、查看模块和查看源文件。
1. “Breakpoints”:显示当前的断点列表,可以通过右键菜单,设置断点的状态(可用、不可用)、增加断点、删除断点、编辑断点等,如图XX所示。
2. “Debugger Log”:调试日志,可以在调试日志中执行调试器命令,该功能可以看做是调试的高级用法,类似在命令行下调试程序。
3. “Expressions”:查看表达式,可以直接计算表达式的结果并显示。
4. “Locals”:查看局部变量,根据当前程序所处的堆栈显示堆栈上所有的变量值。
5. “Modules”:查看模块,可以看到进程当前加载的动态库列表、在内存中的加载地址、动态库的路径等。
6. “Register”:查看CPU寄存器,根据当前程序执行的位置,显示当前寄存器的值。
7. “Source Files”:显示当前调试程序加载调试符号的源文件列表,可以快速跳转到指定的文件设置断点。
8. “Threads”:显示当前的线程数和线程编号。
9. “Edit”:显示当前调试的源代码编辑器。
