IT评测·应用市场-qidao123.com技术社区

标题: (centos)gdb的保姆级教学!!! [打印本页]

作者: 东湖之滨    时间: 前天 01:24
标题: (centos)gdb的保姆级教学!!!
目录

一.查看有无gdb
二.gdb的操作
(1)gdb 中 list 与 l  num的用法
(2)gdb中r、b与d的用法
(3)gdb中n和s的用法
(4)gdb中的p 与 display以及undisplay
(5)gdb中untill、finish与c的用法
(6)gdb中disable与enable的用法
(7)gdb中bar、bt与locals的用法


一.查看有无gdb

利用代码举行检查:
  1. gdb --version
复制代码
如果没有则运行代码:
  1. sudo yum install -y gdb
复制代码

二.gdb的操作

首先创建makefile、mycode.c文件,然后vim举行修改
makefile代码:
  1. mycode:mycode.c
  2.    gcc-o  $@ $^ -g
  3. .PHONY:clean
  4. clean:
  5.    rm -f mycode
复制代码
mycode.c代码:
  1. #include<stdio.h>                                                                                                                                                                                                               
  2.   2
  3.   3 int addToTop(int top)
  4.   4 {
  5.   5   int res=0;
  6.   6   int i=1;
  7.   7   for(;i<=top;i++)
  8.   8   {
  9.   9     res+=i;
  10. 10   }
  11. 11   return res;
  12. 12 }
  13. 13 int main()
  14. 14 {
  15. 15 printf("debug begin\n");
  16. 16 int top=100;
  17. 17 int sum=addToTop(top);
  18. 18 printf("sum:%d\n",sum);
  19. 19
  20. 20
  21. 21 printf("debug end\n");
  22. 22
  23. 23
  24. 24   return 0;
  25. 25 }
  26. ~
复制代码

首先我们输入make,然后会主动天生mycode的文件,再然后输入gdb mycode

(1)gdb 中 list 与 l  num的用法


list会展示我们写的代码,l num并不是从num 行开始输出,而是以num为中央举行输出

首先按l 0,然后连续按住enter,会把剩余代码输出出来,而且展示代码有多少行

l+函数名,会体现函数名所在行与其下9行
(2)gdb中r、b与d的用法


r会直接运行代码,normally体现正常运行

b+行号就是断点的意思,雷同于vs中的F9,info + b,就是查看断点

b 函数名,就会把断点打在函数名称入口的第一条代码

b 文件名:行号,就会把该断点设置在该文件对应的行数

其中info中第一列是我们设置断点的序号

删除断点不能d+行号,而是d+序号(info b中断点的序号)
当我们推出gdb,然后再进入gdb ,输入 info b,是不会体现之前设置的断点
(3)gdb中n和s的用法

n雷同于vs中的F10,是逐过程,也可以用n+连续的enter来连续n的操作

s雷同于vs中的F11(逐语句),同样也可以 s+连续的enter来连续s的操作
(4)gdb中的p 与 display以及undisplay


p与display都雷同于vs中的监视,但是p运行事后之后再举行下一步就不会体现对应的内容,而display运行事后再举行下一步就会体现对应的内容

输入undispaly 则会取消display的监视
(5)gdb中untill、finish与c的用法




until 可以让我们快速的运行我们代码之间的代码块来确认范围

finish是以函数为单位举行来确认范围

c雷同与vs中用F5查看F9设置的断点
(6)gdb中disable与enable的用法


disable的用法就是让设置的断点还存在,但不删除断点,运行时会忽视disable设置的断点

enable就是取消disable的设置
(7)gdb中bar、bt与locals的用法


set bar  变量=num,会让程序跳到 变量=num的位置运行



bt就是查看各级函数的调用以及参数环境
思路是我们先在32行设置断点,然后再r运行到断点 ,然后bt会查看到bt的结果

locals 查看当前栈帧的局部变量  i locals 等同于 info locals 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4