这些东西都是参考《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表示每个字节一组) |
如果断错误指向函数末尾 |
如果某个函数中发生访问越界,很可能并不立即产生段错误,而在函数返回时却产生段错误 |
简单gdb的使用,古老的榕树,5-wow.com