开始使用GDB~~~

不多讲,用printf的方式真的很让人崩溃啊。。。尤其是刚开始就连一句printf的没添加过的,你更是伤不起。。。

初次使用,更高级功能慢慢挖掘。

 

首先,要在编译的时候加上-g开关,我这里用的

gcc  - g update0803.c  - o update

如果不加-g开关,用GDB打开文件的时候会提示找不到symbol。

然后就可以开始找哪一句出现segment fault了...

1、用gdb打开需调试的可执行文件

gdb update

2、对照自己的code,要在哪一行加break。比如,我需要在217行家break。

break   217 or b 217

另,断点可以用行号,也可以用函数的名字。暂时知道这两个。

。。。。加上所有你想加的break,go on

run

3、到达断点之后,单步调试step,或者简写的s

step or s

单步调试也可以用next(简写n)。与step不同的是,step是单步,next是下一行。。。next的下一行是指代码里的下一行,也就是如果遇到函数,他不会进去的。

另外,stepi,nexti是这两个命令的扩展,i表示一次运行的行数,比如,要一次运行下面5行,就直接step5

4、到达指定的断点要干什么呢?当然是要看变量的值,观察变量的值,用print,简写做p。比如,我要打印struct filelist下的filename字符串。

p flielist- > filename

5、我们只是观察循环了的某条语句,不可能把循环里的每条语句都step一遍吧?所以,很快走完下一个循环的命令就是continue,简写作c

6、退出用命令quit,简写作q

7、重新载入文件,用file xxxx,xxxx就是你要调试的可执行文件名字,比如,我把上面的update又重新编译了一遍,然后重新载入

file update

 

然后,又设断点,运行,查看。。。今天先初步接触,总比一句句添加printf强。

你可能感兴趣的:(gdb)