简单gdb的使用
2024-07-07 02:56:58 226人阅读
这些东西都是参考《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表示每个字节一组) |
如果断错误指向函数末尾 | 如果某个函数中发生访问越界,很可能并不立即产生段错误,而在函数返回时却产生段错误 |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。