Linux下gdb的使用

一、编译文件生成可执行文件

   如果想用调试器执行一个可执行文件, 在用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环境

猜你喜欢

转载自www.cnblogs.com/jiangyu0331/p/11647073.html