zl程序教程

您现在的位置是:首页 >  其它

当前栏目

使用gdb记录

记录 GDB 使用
2023-09-11 14:22:20 时间

  使用gdb有几年了,但仅仅局限于给学生写个demo之类的,几乎没有什么深究。昨天看到一篇帖子,对C程序运行中的程序栈空间比较感兴趣,就来用GDB看下。俗话说工欲善其事,必先利其器。

1、配置gdb,如果配置vim你还不会,可以看我的另外的内容。

  首先找到一个非常不错的:https://github.com/gdbinit/gdbinit,没有什么难度,git clone https://github.com/gdbinit/Gdbinit.git,只有两个文件,还有一个readme,将文件直接移动到~下即可,mv Gdbinit/gdbinit ~/.gdbinit完事了

2、vim编辑代码如下,其中1~9行是vim的自动补全注释完成的,其他的你可以照抄,注释还是自己改下吧

 1 /* *=+=+=+=+* *** *=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=                      
 2   * 作者代号: *** :guochaoxxl
 3   * 版权声明: *** :(魎魍魅魑)GPL3
 4   * 联络信箱: *** :guochaoxxl@163.com
 5   * 文档用途: *** :深入理解C指针
 6   * 文档信息: *** :~/WORKM/testCStack.c
 7   * 修订时间: *** :2021年第28周 07月18日 星期日 下午08:29 (199天)
 8   * 代码说明: *** :自行添加
 9  * *+=+=+=+=* *** *+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+*/
10 #include <stdio.h>
11 #include <stdlib.h>
12 
13 int main(int argc, char **argv)
14 {
15     char stackString[10] = "stackString";
16     int var1 = 15;
17     char *heapString = (char *)malloc(50*sizeof(char));
18 
19     printf("Enter a string for the stack: ");
20     gets(stackString);
21     printf("Enter a string for the heap: ");
22     gets(heapString);
23 
24     printf("Stack string is: %s\n",  stackString);
25     printf("Stack string is: %x\n",  &stackString);
26     printf("Heap string is: %s\n", heapString);
27     printf("Heap string is: %x\n", heapString);
28     printf("var1 is: %d\n", var1);
29     printf("var1 is: %x\n", &var1);
30 
31 
32     return 0;
33 }

  用vim编辑完上述代码后,直接按下F10就可以一键编译程序了,具体可以查找vim配置完成一键编译的配置

3、进入gdb调试状态

  为了避免进入gdb时的半屏提示信息,使用gdb -q命令进入gdb,接着输入file filename,其中filename是你自己的文件名称,我这里是testCStack,就会出现提示符号gdb了