总结下gdb调试流程,当日志用。
流程:
1)带着调试选项编译(加-g),构建调试对象a.out($g++ -Wall -o2 -g ./a.cpp,如果使用到TSD等还需要加编译选项-lpthread)
2.1)启动gdb(开始运行指定程序并调试$gdb ./aout、attach到正在运行的进程并调试$gdb -p `pidof a.out`,gdb -tui分屏显示源代码)
2.2)source ./mygdbinit (载入gdb命令脚本文件mygdbinit,等效$gdb --commonds=./.mygdbinit)
2.3)开始gdb(run:直接运行、start:设置main断点再运行,start 10 20 30:发送3个参数给执行程序的main函数)
3.1)设置断点(一般<函数、行、地址、下行、偏移量、汇编机器指令行等>断点、内存断点、条件断点等:b,watch,awatch,rwatch,注意区别:b fun和b *fun的不同)
3.2)显示所有断点(info b)
3.3)删除断点(delete 断点编号、clear 详细断点、delete:删除所有断点,等)
4.1)显示栈/栈帧(bt、bt N、bt -N、bt full、bt full N、bt full -N等,注:一个进程对应call-stack调用栈,一个函数对应stack-frame栈帧,显示栈帧: