- 1 发行版本和开发版本
- 1.1 生成命令
- 2 gdb调试
- 2.1 下断点
- 2.2 调试过程命令
- 2.3 查看命令
1 发行版本和开发版本 1.1 生成命令
- 一步生成
gcc -o main main.c #生成release版本 gcc -o debug main.c -g #生成debug版本
- 分步生成
- 编译期加入debug
- 后续直接继续生成
gcc -c main.c -g #编译期加入debug gcc -o main main.o #继续生成
- 显示section header信息
- 开发版本多了 debug_* 段
readelf -S main readelf -S debug2 gdb调试 2.1 下断点
gdb debug l #默认显示main函数所在文件的源代码 list file_name:num #显示file_name文件num行附近的源代码 b line_num #num行加断点 b function_name #指定函数加断点 b file_name:line_num #给file_name文件num行加断点 b line_num if 条件 #条件断点 info b #显示断点信息 d bpnum #删除断点 disable bpnum #断点无效 enable bpnum #断点生效2.2 调试过程命令
r #启动调试 n #执行下一步 s #进入函数内部 finish #退出函数 c #继续运行到下一个断点 q #退出调试2.3 查看命令
p val_name #查看变量的值 p &val_name #查看变量的地址 p *ptr #查看指针指向地址存储的值 p arr #查看数组中的所有元素 p *ptr@num #查看ptr数组中的num个元素 p struct_val #查看结构体变量中所有成员的值 p struct_val.a #查看结构体变量中某个成员的值 p struct_ptr->a #查看指针指向的结构体变量中某个成员的值 p function_name(a,b) #查看函数通过给定参数运行的结果 bt #查看函数调用栈(函数调用流程)



