因为近期在vim编辑器里面尝试着写写程序,然后就接触到了gdb调试。
才刚刚接触还是不很懂,像什么设置断点呀单步调试呀什么的,现在还没怎么用上。在这里只是先写一些自己刚刚学到的。之后的以后用到了在补充。
首先是在vim里面写好了一个简单的程序,保存为test_1.c.
#include <stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
就是上面这个简单的程序。
然后进行编译成可执行文件。
使用的命令是gcc test_1.c -g -o test_1
假如提示没有gcc的话,那就是系统还没有安装gcc。我用的是yum install gcc命令来安装的。
这样test_1里面就是这个程序的可执行文件了。
我们可以简单的使用 ./test_1 来运行这个程序。
但是我们也可以使用gdb命令。
使用命令gdb test_1就可以进入gdb环境了。
直接使用gdb也可以进来,但是进来之后需要用file test_1来选择test_1程序.
这时候我们就可以初步使用gdb命令来调试这个程序了。
1)进入GDB #gdb test
test是要调试的程序,由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。
2)查看源码 (gdb) l
源码会进行行号提示。
如果需要查看在其他文件中定义的函数,在l后加上函数名即可定位到这个函数的定义及查看附近的其他源码。或者:使用断点或单步运行,到某个函数处使用s进入这个函数。
3)设置断点 (gdb) b 6
这样会在运行到源码第6行时停止,可以查看变量的值、堆栈情况等;这个行号是gdb的行号。
4)查看断点处情况 (gdb) info b
可以键入"info b"来查看断点处情况,可以设置多个断点;
5)运行代码 (gdb) r
6)显示变量值 (gdb) p n
在程序暂停时,键入"p 变量名"(print)即可;
GDB在显示变量值时都会在对应值之前加上"$N"标记,它是当前变量值的引用标记,以后若想再次引用此变量,就可以直接写作"$N",而无需写冗长的变量名;
7)观察变量 (gdb) watch n
在某一循环处,往往希望能够观察一个变量的变化情况,这时就可以键入命令"watch"来观察变量的变化情况,GDB在"n"设置了观察点;
8)单步运行 (gdb) n
9)程序继续运行 (gdb) c
使程序继续往下运行,直到再次遇到断点或程序结束;
10)退出GDB (gdb) q
目前我只掌握了这一些。其他的之后再补充。