分享

GDB 常用调试命令

 写意人生 2014-01-11
GDB 常用调试命令


步进方法:
1,执行下一条c语言语句,遇到函数不进入
next / n
2,  执行下一条c语言语句,遇到函数会进入
      step /s
3, 汇编指令级别的下一条执行语句。
si 

变量的查看或者打印方法
1, info/i 查看变量的值
如:  info  a // 查看变量a的值
2, print 打印或者修改表达式的值
如:print a 查看a的值
print a=2   修改a的值为2.
3, display            每次调试停下后都会打印,用于要随时查看的变量
undisplay 取消上面的动作
如:display sum // 每次停止都打印sum的值。
undisplay sum // 取消sum的显示

调试过程中修改变量的值
set var 如:set var sum=0 修改变量sum的值为0
print 如:print sum=2 修改sum的值为2.

栈帧查看
1,查看函数调用的栈帧
backtrace/bt
2, 切换栈,用于打印函数内部的局部变量时,切换到其他函数内
frame  num 如frame 2 切换到栈帧2.

显示源代码
list 每次打印10行
list num 从num行开始打印10行
list 函数 显示函数的全部内容。

一些关键字
locals 函数内部的所有局部变量,可以使用info locals 查看一个函数内所有局部变量的值。
register 所有的寄存器,info register,查看所有寄存器的值

开始或者停止
start 会运行到程序开始的第一条语句出停止等待下一条命令。用于开始或者调试中转到开始重新运行。
finish 运行到当前函数的末尾。

断点部分
break num 在第num行设置断点
info breakpoints 查看所有的设置的断点
delete breakpoints 2 删除2号断点
disable breakpoints 2 暂时禁用2号断点,以后还可以启用
enable 2 重新启用2号断点
break 9 if sum !=0 在第9行设置条件断点,当sum不等于0才激活。
continue 继续运行,直到遇到下一个断点
watch input[5] 当访问input的第5个元素的内存的时候,激活断点
info watch 查看设置了那些断点

打印内存的值
x /7b 打印7组,每个二进制一组
如: x /7b $esp 打印堆栈栈顶附近7个字节
x /20x 打印20组,每个以16进制打印
如: x/20x $esp


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多