在Ubuntu下调试C++代码,可以使用多种工具和方法。以下是一些常用的技巧和步骤:
安装GDB: 首先,确保系统已经安装了GDB。如果没有安装,可以使用以下命令进行安装:
sudo apt update
sudo apt install gdb
编译程序时包含调试信息:
在编译C++源代码时,需要加上 -g 参数来确保生成的可执行文件包含了调试信息。例如:
g++ -g -o my_program my_program.cpp
启动GDB调试程序: 使用以下命令启动GDB并加载你的程序:
gdb my_program
设置断点:
在GDB中,可以使用 break 命令在指定行设置断点。例如,在 main 函数处设置断点:
break main
或者在特定函数或行号设置断点:
break my_program.cpp:42
运行程序:
使用 run 命令启动程序。如果设置了断点,程序将在断点处停止:
run
调试操作:
list 或 l:显示源代码。next 或 n:执行下一行代码,但不进入函数内部。step 或 s:执行下一行代码,并进入函数内部。continue 或 c:继续执行程序直到下一个断点。print 或 p:打印变量的值。例如,打印变量 x 的值:print x
backtrace 或 bt:显示当前的调用堆栈。frame 或 f:选择堆栈帧。例如,选择堆栈中的第7帧:frame 7
watch:监视表达式的值。当表达式的值发生更改时,程序将暂停。退出GDB:
使用 quit 命令退出GDB。
安装必要的软件和组件:
配置调试环境:
main.cpp。Ctrl+Shift+P 打开命令面板,输入 Tasks: Configure Task,然后选择 Create tasks.json file from template。选择 Others,这将创建一个 tasks.json 文件,内容如下:{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-O0",
"{file}",
"-std=c++17",
"-o",
"{fileBasenameNoExtension}"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"gcc"
]
}
]
}
Ctrl+Shift+D 打开调试视图,点击齿轮图标打开 launch.json 配置文件。选择 C (GDB/LLDB),这将创建一个默认的调试配置。你可以根据需要修改它。添加断点:
在 main.cpp 文件中,在你想要调试的代码行左侧点击,设置断点。
启动调试:
点击调试视图中的绿色三角形按钮(或按下 F5 键)开始调试。程序将在第一个断点处停止。
使用GDB命令进行调试: 程序停止后,你可以使用GDB的各种命令进行调试,例如:
list 或 l:显示源代码。break 或 b:设置断点。run 或 r:启动程序。next 或 n:执行下一行代码,但不进入函数。step 或 s:执行下一行代码,如果是函数调用,则进入函数。continue 或 c:从当前位置继续执行程序,直到遇到下一个断点。finish:执行完当前函数并返回到调用者。print 或 p:打印变量的值。backtrace 或 bt:显示当前调用堆栈。frame 或 f:选择堆栈帧。watch:监视表达式的值。通过以上步骤,你可以在Ubuntu上使用GDB或Visual Studio Code进行C++程序的调试。