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
利用代码举行检查:
gdb --version
复制代码
如果没有则运行代码:
sudo yum install -y gdb
复制代码
二.gdb的操作
首先创建makefile、mycode.c文件,然后vim举行修改
makefile代码:
mycode:mycode.c
gcc-o $@ $^ -g
.PHONY:clean
clean:
rm -f mycode
复制代码
mycode.c代码:
#include<stdio.h>
2
3 int addToTop(int top)
4 {
5 int res=0;
6 int i=1;
7 for(;i<=top;i++)
8 {
9 res+=i;
10 }
11 return res;
12 }
13 int main()
14 {
15 printf("debug begin\n");
16 int top=100;
17 int sum=addToTop(top);
18 printf("sum:%d\n",sum);
19
20
21 printf("debug end\n");
22
23
24 return 0;
25 }
~
复制代码
首先我们输入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