本文摘抄于宋劲彬老师的《linux编程一站式学习》
在介绍gdb前先声明,工具再强大,修bug的基本思想也是:“分析现象->假设错误原因->产生新的现象去验证假设”这个道理。
gdb就是一个功能强大的程序调试工具,可以实现断点调试,局部变量值查看等等,是用来辅助程序员查找bug的工具。
gdb的使用:
编译时用-g参数生成的文件才能被gdb调试,如gcc -g test.c -o test;则test文件就可以用gdb来调试,需要注意的是test.c的文件名也不能更改,因为test其实并不含有代码。
在linux shell下直接键入gdb test就可以调试test文件了,按q即可退出。下面给出调试时的基本命令:
gdb基本命令1:(这里的栈帧是指某函数在栈堆里的位置)
start 开始执行程序,停在main函数第一行语句前等待命令
list(或l) 列出源代码,接着上次的位置往下列,每次列10行
list+行号 列出某行开始的源代码
list+函数名 列出某函数的源代码
backtrace(或bt) 查看各级函数调用及参数
frame(或f)+帧编号 选择栈帧
info(或i)+locals 查看当前栈帧局部变量的值
next(或n) 执行下一条语句,跳过调用的函数
step(或s) 执行下一条语句,进入调用的函数
print(或p)+表达式 打印表达式的值,通过表达式可以修改变量的值或者调用函数
set+var+变量赋值语句 修改变量的值
finish 执行到当前函数返回,然后停下来等待命令
未完待续……