GDB初步学习

 

在编写程序过程中难免会遇到错误。这时就需要调试工具帮我们找到代码并修改。GDB则是在LINUX编程学习中不可逾越的需要学习的工具。

  1. 为使用GDB进行调试,对代码进行调试时要求在编译的时候用-g 选项,以生成增加的符号表。

$ gcc –g  debugme.c –o debugme

  1. ./debugme来执行程序时,会产生一个段错误并转储内存dump core.

a)   启动gdb,程序名和内存转储文件core作为参数

       $gdb debugme core

另外可以使用参数 –d dirname来指定源代码的路径。

b)   然后在调试环境下运行这个程序。Run,之后会显示错误信息。

 c)   知道哪个函数出了问题了。但到底什么问题还不是很清楚,那里调用了这个函数,函数本身有啥问题。

(gdb)backtrace  执行,backtrace生成导致错误的函数库。

 

查看出错行附近的代码对调式程序很有帮助。使用list命令,list[m,n] m起始,n结束 ,默认附近10行。

知道代码什么地方做了啥操作,就可以判断问题出在哪进行修改了。

 

  1. 查看变量值及变量类型

a)   命令print查看值。例如查看i的值,print I ,查看数据ary[0]

-ary[10]的值 : print ary[0]@11

      b) 命令whatis 查看类型。Whatis i

  1. 设置断点

a)   根据行号设置断点

(gdb)break linenum

b)   根据函数设置断点

(gdb)break funcname

c)   非当前文件行号

(gdb)break filename:linenum

d)   非当前文件函数名

(gdb) break filename:funcname

e)   条件断点

(gdb)break linenum if expr 或者break funcname if expr

f)   使断点无效

Info breakponits

  1. 删除断点  delete   num
  2. 无效      disable  num
  3. 用于函数的命令

a)   Call name(args)  调用并执行名为name,参数为args的函数。

b)   Finish           如果可以,则终止当前函数并打印它的返回值

c)   Return value     停止执行当前函数,并将value返回给调用者。

posted on 2012-03-31 13:09  Jerry Zong  阅读(477)  评论(0编辑  收藏  举报

导航