当程序出现错误,可使用gdb在线调试,以下举一个简单例子说明,如何定位程序。
1.创建一个文件gdb_test.c,输入以下代码。代码中的第5行,使用了未初始化为有效值的指针,运行过程中肯定是会出错的。
8 printf("******** b = %d ************ ",*b);
2.编译源码,生成可执行文件gdb_test。增加参数-g 可为调试过程提供更多有效的信息,如更准备定位当前崩溃位置。gdb过程中用list能崩溃附近的代码。
gcc -o gdb_test -g gdb_test.c
3.先直接运行gdb_test程序,由于b未初始化为有效值,运行时会出现段错误。
1). 先启动GDB 并装载gdb_test文件:
2). 在gdb提示命令符号后,输入run命令,执行已经装载的gdb_test文件,可看到崩溃的提示信息。这个程序比较简单,崩溃的信息中已经直接说明在哪个文件的哪一行。如果还是无法定位,接着往下看:
3). 输入where 命令,查看程序可能出错的地方。
6).输入run命令,重新运行程序,程序运行到第7行处停止运行,
在这里只有一个变量赋值,唯一可能导致出错的就是这个变量b。
- 在GDB命令提示符后,直接按回车键为重复上一次的命令。
- DDD 是一个简洁的GDB图形前端,使用更简单。