一、启动gdb
1. gdb <program>, program是执行文件路径
2. gdb <program> <core>, gdb调试core文件,查找程序出错位置。如果程序中断没有产生core文件,ulimit –a可以查看到系统设置的core文件大小是0,用ulimit -c unlimited将core文件大小设为无限制即刻。
3. gdb <program> <PID>, 对于多进程程序,指定进程id
二、gdb命令
· file, 装载想要调试的程序
· set args, 如果不想通过r [args]执行的话,可以先set args再r
· watch,设置观察点监视变量值,在变量值改变处停止
· rwatch,观察点被读时停止
· display,在断点停止的地方显示指定表达式或变量值
· undisplay,取消display,需要display的id
· b,enable,disable,b if [condition], delete,断点操作
· ignore,忽略断点次数,如ignore 2 5,断点2在第6次才会停下
· shell <command>,不退出gdb执行shell命令
· info,打印信息
info b,输出所有断点信息
info watchpoints, 显示所有观察点
- info frame,输出当前帧信息
- info args,参数信息
- info locals,当前可以访问的局部变量信息
· print,输出,对于动态数组,p *name@len输出前len个数组元素
· ptype, 输出变量类型,可以输出一个结构的定义
· until,执行到某处
· command, 自动化测试。command 断点号,输入命令,那么每次遇到该断点都会自动执行这些命令
. up num, 向上到第num层frame
. down num,向下到第num层frame
. frame num, 直接转到第num层frame