通俗易懂说GDB调试(一)

GDB常用命令说明

1. 命令 ulimit -c ,打开coreDump

ulimit -c 查看内核采集有没有开启
打开则返回: unlimited

2. 命令 -g ,开启GDB调试

1. gcc -g Wall -o hello.out hello.c  //编译hello.c 
2. gdb hello.out  //调试 hello.out

3. 命令 l(ls) ,查看源代码

4. 命令 b(breakpoint) ,添加断点

 如: 按照函数来添加断点: b testFunc
      按照行号来添加断点:  b 13 

5. 命令 r(run) ,开始执行程序,直至断点停止

6. 命令 n(next) ,单步调试

n 到下一步. 不管子过程如何都不进入. 直接一次跳过

7. 命令 s(step) ,单步调试,进入函数内执行

s 遇到子函数,会进入函数内部调试.

8. 命令 p(print) ,打印输出数据

如: print var //查看变量的值
	 print/x var //查看变量的值,十六进制显示
	 print var=value //修改变量的值为制定值
	 print sizeof(A) //显示数据占用内存大小

9. 命令 q(quit)或ctrl+d ,退出调试

10. 命令 start ,开始执行,并使程序停在main第一行

11. 命令 c(continue) ,继续执行,直到下一个断点

12. 命令 info(infomation) ,查看断点

如: info args //显示当前函数的入参
	info b    //查看断点信息

13. 命令 d(delete) ,删除断点

如: d 1  //删除断点1
     d   //删除所有断点

14. 命令 set ,修改变量或入参

如: set var=value //设置变量值

15. 什么是调用堆栈?

程序执行函数调用时,会生成相应的调用信息,包括调用在程序中的位置,
调用参数以及函数的局部变量。这些信息保存在一个叫做堆栈框的数据结构里面,
这个堆栈框的区域就叫做: 调用堆栈。
其中,函数每次被调用,就会生成一个堆栈框;
函数调用结束返回时,就相应销毁一个堆栈框。

16. 参考

[1]: https://www.cnblogs.com/life2refuel/p/5396538.html

猜你喜欢

转载自blog.csdn.net/lqy971966/article/details/88963635