这几天在学习linux驱动的有关知识,顺带把调试部分也学一下。下面是我对与gdb调试器使用的一些笔记。
这里给出了一个短小的程序,由此带领读者熟悉 gdb的使用流程。建议读者能够动手实际操作以下。
/*test.c*/
#include <stdio.h>
int sum(int m);
int main()
{
int i, n = 0;
sum(50);
for(i = 1; i<= 50; i++)
{
n += i;
}
printf("The sum of 1-50 is %d \n", n );
}
int sum(int m)
{
int i, n = 0;
for (i = 1; i <= m; i++)
{
n += i;
printf("The sum of 1-m is %d\n", n);
}
}
在保存退出后首先使用gcc对test.c进行编译,注意一定要加上选项“-g” ,
这样编译出的可执行代码中才包含调试信息,否则之后 gdb无法载入该可执行文件。
[root@localhost gdb]# gcc -g test.c -o test
虽然这段程序没有错误,但调试完全正确的程序可以更加了解 gdb的使用流程。接
下来就启动 gdb 进行调试。注意,gdb 进行调试的是可执行文件,而不是如“.c”的
源代码,因此,需要先通过gcc编译生成可执行文件才能用 gdb进行调试。
[root@localhost gdb]# gdb test ......(gdb)
1.查看文件 l
2.设置断点 b + 6(行号)
3.查看断点情况 info b
3.1函数断点 b test.c:sum
3.2条件断点 b 8 if ==10
4.运行代码 r
5.查看变量值 p + n(变量值)
6.单步运行 n(next不进入函数) s(step进入函数)