一、编译文件生成可执行文件
如果想用调试器执行一个可执行文件, 在用gcc编译时必须加上-g选项。
加上-g选项以后,gcc在编译是会做以下额外的操作:
1. 创建符号表,符号表包含了程序中使用的变量名称的列表。
2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。
二、ulimit -c unlimited 允许生成core文件
三、gdb a.out 或者先输入gdb 然后 file a.out 进入调试
四、r/run 开始运行程序
五、l /list 显示多行源代码
1. list 从上次的位置开始显示,默认情况下,一次显示10行。
2. list n显示以第n行为中心的10行代码
3. list functionname显示以functionname的函数为中心的10行代码
4. list - 显示刚才打印过的源代码之前的代码
5.set listsize n 设置显示的行数
6.show listsize显示当前设置显示的行数
六、b/break 设置断点 程序运行到断点时会停下
1. break location:在location位置设置断点,改位置可以为某一行,某函数名或者其它结构的地址。
2. info breakpoint:查看断点信息。
3. delete breakpoints 断点号:删除断点。
七、display/disp 跟踪查看某个变量,每次停下都显示它的值
也可以使用disable,enable,delete,info命令修改及查看其状态,用法与对断点的一样
八、s/step 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句
九、n/next 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句)
十、p/print 打印内部变量值
十一、c/continue 继续运行程序,直到遇到下一个断点
十二、set var name=value 在程序运行中动态改变变量的值
十三、watch 监视变量值的变化
十四、backtrace/bt 查看堆栈使用信息
十五、f/frame 查看某一帧的堆栈信息
f n 查看第n条堆栈信息。
十六、k/kill 终止正在调试的程序
十七:q/quit 退出gdb环境