一:GDB的概述:GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
二:GDB的四个方面的功能:(1):启动你的程序,可以按照自己定义的要求随心所欲的运行程序,进行程序调试。
(2):可以让被调试的程序在你所指定的的调试的断点处停住。(断点可以是条件表达式)
(3):当程序被停住时,可以检查此时程序所发生的事。
(4):动态的改变你程序的执行环境。
GDB调试的缺点:没有图形调试界面。
GDB的调试方法:gcc -g hello.c -o hello 进入GDB 对hello.c文件进行调试生成可调试文件hello。
接下来用gdb hello 开始调试。
(-g)是对文件进行调试,(-o)是进行优化。一般都是一起用,不过可以不进行优化,有时候优化会导致调试时文件中的某些代码不显示。
如果一些正常,GDB将被启动并在屏幕上输出出版权信息,启动GDB时的另一个有用的命令行选项是:“-d dirname”,其中敌人那么是一个目录名。该目录是告诉GDB应该到哪去寻找源代码,一旦出现GDB的命令提示符(gdb),就表明GDB已经准备好,用户可以进行各种调试命令了。
命令:
run:简写r 让被调试的程序运行起来,
run 行数:简写r 行数 再指定行数执行,如果之后有断点,运行到直到断点行的前一行
list【m,n】:表示显示从m行到n行结束的代码段。
list:表示显示最近10行的源代码。
list - :显示从当前开始的前10行的源代码。
设置断点:break linenum 根据行号设置断点,break funcname根据函数名设置断点。
break:简写b:设置断点。
b 10(break 10):设置断点,在源程序第10行。
b func(break func):设置断点,再函数func函数入口处停下。
info b(break):查询所有断点信息。
delete 数:删除此数的断点 例如:delete 1:删除断点1。 delete 不加数,删除所有断点。
disable 1:该命令禁止断点1。同时将断点信息的(Enb)域将变为n。
enable 1:该命令将允许断点1,同时将断点信息(Enb)域将变为y。
clean 行号:清除源文件中某一代码行上的所有断点。删除刚才停止处的断点。
查看变量值:
p;print的简写,查看当前变量n的值,GDB通过 $N($1 , $2) 来显示变量的值,下次查看变量值得时候就可以用 $N 代替变量名了。
继续运行程序:
c:continue(c)的简写,查看完当前程序情况后,就可以让程序继续往下运行了。
单步运行:
step:简写s,可以在发生函数调用时进入函数内部运行。
finish:退出该函数返回它的调用函数中。
next:简写n,让程序一步一步执行下去,n不会进行函数内部运行。
return:强制从当前函数返回。
make:使用户不退出gdb就可以产生可执行文件。
quit:退出gdb。