源码查看
list / l | 打印当前源码 |
l 10 | 打印第10行附近的源码 |
l filename:10 | 打印指定文件第10行的源码(行号可以省略) |
l function | 打印指定函数附近的源码 |
启动调试
gdb ./可执行文件 | 启动gdb |
run / r | 运行程序 |
list | 打印当前文件源码 |
调试core文件(coredump)
ulimit -c | 查看core文件的大小限制,如果返回0,需要设置 |
ulimit -c unlimited | 设置core文件大小不受限制 |
gdb 可执行文件 core文件 | 调试 |
调试已运行程序
ps -ef | grep 进程名; | 获取运行程序的进程号pid,这里的进程名就是可执行文件名 |
gdb -p pid | 调试id相关进程 |
断点设置
info breakpoints | 查看所有的断点信息,Num为断点号 |
b/break 10 | 在当前文件,在第10行设置断点 |
b xxx.cpp:10 | 在xxx文件,在第10行设置断点 |
b function | 在function处设置断点,不限于当前的文件 |
tbreak xxx.cpp:10 | 设置临时断点,只生效一次 |
ignore bnum 30 | 跳过断点号bnum的前30次进入 |
enable / disable bnum | 启用/禁用标号为bnum的断点 |
delete bnum | 删除标号为bnum的断点 |
变量查看
print / p 变量名 | 打印基本类型、数组、字符串等 |
p 'filename'::变量名 | 若多个文件有变量重名,可以这样区分 |
p *d | 打印指针d指向的内容 |
p *d@10 | 打印指针d指向的接下来10个长度的内容 |
display 变量名 | 每次程序断住都会显示该变量的值 |
单步调试
next / n | 执行下一条语句 |
step / s | 进入函数内部 |
continue / c | 执行到下一个断点 |
查看调用堆栈
bt | 看调用堆栈 |