GDB初步学习
在编写程序过程中难免会遇到错误。这时就需要调试工具帮我们找到代码并修改。GDB则是在LINUX编程学习中不可逾越的需要学习的工具。
- 为使用GDB进行调试,对代码进行调试时要求在编译的时候用-g 选项,以生成增加的符号表。
$ gcc –g debugme.c –o debugme
- ./debugme来执行程序时,会产生一个段错误并转储内存dump core.
a) 启动gdb,程序名和内存转储文件core作为参数
$gdb debugme core
另外可以使用参数 –d dirname来指定源代码的路径。
b) 然后在调试环境下运行这个程序。Run,之后会显示错误信息。
c) 知道哪个函数出了问题了。但到底什么问题还不是很清楚,那里调用了这个函数,函数本身有啥问题。
(gdb)backtrace 执行,backtrace生成导致错误的函数库。
查看出错行附近的代码对调式程序很有帮助。使用list命令,list[m,n] m起始,n结束 ,默认附近10行。
知道代码什么地方做了啥操作,就可以判断问题出在哪进行修改了。
- 查看变量值及变量类型
a) 命令print查看值。例如查看i的值,print I ,查看数据ary[0]
-ary[10]的值 : print ary[0]@11
b) 命令whatis 查看类型。Whatis i
- 设置断点
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
- 删除断点 delete num
- 无效 disable num
- 用于函数的命令
a) Call name(args) 调用并执行名为name,参数为args的函数。
b) Finish 如果可以,则终止当前函数并打印它的返回值
c) Return value 停止执行当前函数,并将value返回给调用者。
posted on 2012-03-31 13:09 Jerry Zong 阅读(477) 评论(0) 编辑 收藏 举报