gdb
# gdb 调试运行中的进程
先查出进程的 pid,使用下面命令
(gdb) gdb attach pid
1
使用简易界面形式调试
(gdb) gdb -tui gameworld core.1234
1
调试带参数程序
set args 1 //可指定运行时参数。(如:set args 10 20 30 40 50)
show args //命令可以查看设置好的运行参数
1
2
2
| 命令 | 描述 | 例 |
|---|---|---|
| gcc -g main.c | 在目标文件加入源代码的信息 | |
| gdb a.out | gdb a.out | |
| start | 开始调试 | |
| next/n | 一条一条执行 | |
| step/s | 执行下一条,如果函数进入函数 | |
| backtrace/bt | 查看函数调用栈帧 | |
| info/i locals | 查看当前栈帧局部变量 | |
| frame/f | 选择栈帧,再查看局部变量 | |
| print/p | 打印变量的值,局部变量或全局变量等 | |
| finish | 运行到当前函数返回 | |
| set var sum=0 | 修改变量值 | |
| list/l | 列出源码,行号或函数名 | |
| display/undisplay sum | 每次停下显示变量的值/取消跟踪 | |
| break/b | 设置断点,行号或函数名 | b test.cpp:23 |
| continue/c | 连续运行 | |
| info/i breakpoints | 查看已经设置的断点 | |
| delete breakpoints 2 | 删除某个断点 | |
| disable/enable breakpoints 3 | 禁用/启用某个断点 | |
| delete breakpoints | 删除断点 | delete 3,删除 3 号断点 |
| clear | 清除所有断点 | |
| break 9 if sum != 0 | 满足条件才激活断点 | |
| run/r | 重新从程序开头连续执行 | |
| watch input[4] | 设置观察点 | |
| info/i watchpoints | 查看设置的观察点 | |
| x/7b input | 打印存储器内容,b--每个字节一组,7--7 组 | |
| disassemble | 反汇编当前函数或指定函数 | |
| si | 一条指令一条指令调试 而 s 是一行一行代码 | |
| info registers | 显示所有寄存器的当前值 | |
| x/20 $esp | 查看内存中开始的 20 个数 | |
| info inferiors | 查看进程信息 | |
| info threads | 查看线程 | |
| thread n | 切换线程(n 代表第几个线程) |
编辑 (opens new window)
上次更新: 2023/02/24, 10:34:03