在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++程序的调试。