首先下面是我们调试一个例子,用的是我们test.c文件,结合我上一篇动态库(通用链表)来使用
#include <stdio.h>
#include<stdlib.h>
#include "list.h"
#include <string.h>
typedef struct student
{
int id;
char name[20];
}S;
int main()
{
pNode p = NULL;
p = (pNode)list_init(NULL);
S * people = (S *)malloc(sizeof(S));
S * people1 = (S *)malloc(sizeof(S));
S * people2 = (S *)malloc(sizeof(S));
people->id = 1;
people1->id =2;
people2->id =3;
strcpy(people->name,"gao");
strcpy(people1->name,"chen");
strcpy(people2->name,"liu");
list_add(people,p);
list_add(people1,p);
list_add(people2,p);
while(p->pnext!=NULL)
{
p = p->pnext;
S *s = (S *)(p->pdata);
printf("myid:%d\t\t",s->id);
printf("myname:%s\n",s->name);
}
}
-----------------------------------开始gdb调试----------------------------------------------
编译生成我们需要调试的文件
使用GDB调试
现在我们进入gdb模式(gdb)
l命令可以从第一行显示出我们的原码(如下)
设置断点(设置断点在 25 行,设置断点在35行)
显示断点信息
运行程序(r----run的简写)
单条语句执行(n----next的简写)
继续运行程序(c---continue的简写)
打印变量的值(p ---print的简写)
读取符号表(s---sign的简写)
退出gdb调试(q---quit的简写)
好了,gdb调试暂时讲到这里了