首页 > 代码库 > 简单gdb的使用

简单gdb的使用

这些东西都是参考《Linux C编程一站式学习》,在看这本书的gdb这块的时候,把这些总结性的东西记录下来方便以后复习,这些东西吧其实在一年前就已经看过了的,但是缺少笔记总是记不住

命令 描述
backtrace(bt) 参考各级函数调用及参数的堆栈信息
finish 一般是配合step使用,当step跳入一个函数的时候,finish后执行到当前函数返回,然后停下来
frame(f) num(int) 选择栈帧
info(i)locals 变量名 查看当前栈帧局部变量的值
list(l) 列出源代码,接着上次的位置往下再列10行
list 行号 列出从第几行开始的源代码
list 函数名 列出某个函数的源代码,还是只能列前10行
next(n) 执行下一行语句,n之后显示的行是还未执行的行,再次n之后才执行
print(p) 表达式 打印表达式的值,通过表达式可以修改变量的值或者调用函数
set var 变量=xx 修改变量的值
start 开始执行程序,停在main函数第一行语句前面等待命令
step(s) 执行下一行语句,如果有函数则跳入函数
break(b) 行号 在某一行设置断点
break(b) 函数名 在某一个函数开头设置断点
break 行号 if xxxx 设置条件断点
continue(c) 从当前位置开始连续而非单步执行程序,遇到断点会停下来,或者停在下一循环的开头
delete breakpoints num 删除断点,每个断点都有一个短点号,info breakpoints可以看到
disable breakpoints num 禁用num断点
enable breakpoints num 启用num断点
info(i) breakpoints 查看当前设置了那些断点
run(r) 从头开始连续而非单步执行程序,start是单步执行
display 变量名 跟踪查看一个变量,每次停下来都显示它的值
undisplay 变量名 取消对先前设置的那些变量的跟踪
断点与观察点 断点是程序运行到某一行时中断,观察点是程序访问某一存储单元时中断,对于内存空间被修改很有用
watch 表达式 当表达式的值发生改变时暂停程序,这个是很有用的 watch var、watch addr、watch a+b*c…
info(i) watchpoints 查看当前设置了那些观察点
x 从某个位置开始打印存储器的一段内容,全部当成字节来看(x/7b addr   b表示每个字节一组)
如果断错误指向函数末尾 如果某个函数中发生访问越界,很可能并不立即产生段错误,而在函数返回时却产生段错误