美文网首页
程序调试  |  GDB常用命令备忘录

程序调试  |  GDB常用命令备忘录

作者: rh_Jameson | 来源:发表于2016-09-28 18:12 被阅读490次

    最近项目需要用到gdb调试程序, 鉴于每次用时都要google回忆下常用的命令,效率有点low,故整理份命令备忘录,如下:

    GDB Layout命令

    每次gdb时不知道程序跑到哪了,只能list?? 错, layout窗口才是王道!!

    命令 功能
    layout src 显示源码窗口
    layout asm 显示汇编窗口
    layout split 显示源码 & 汇编窗口
    layout regs 显示汇编 & 寄存器窗口
    layout next 下一个layout
    layout prev 上一个layout
    C-x 1 单窗口模式
    C-x 2 双窗口模式
    C-x a 回到传统模式

    GDB 跳转执行命令

    命令 功能
    start 开始启动程序,并停在main第一句等待命令
    step 执行下一行语句, 如语句为函数调用, 进入函数中
    next 执行下一行语句, 如语句为函数调用, 不进入函数中
    finish 连续运行到当前函数返回为止
    continue 从当前位置继续运行程序
    return 强制令当前函数返回
    call func() 强制调用函数, 也可以用print func()
    run 从头开始运行程序
    quit 退出程序

    注: call func() 与 print func() 的区别,在于调用void函数时, call func()没有返回值, 而print有~~

    GDB调试输出命令

    命令 功能
    print 输出变量值 & 调用函数 & 通过表达式改变变量值
    info var 查看全局 & 静态变量
    info locals 查看当前函数局部变量
    list 查看当前位置代码
    backtrace 查看各级堆栈的函数调用及参数
    set var 变量=xx 将变量赋值为xx

    注:
    p/x 3*i -- x for hexadecimal, o for octal, d for decimal, f for float, c for char, s for string

    断点

    命令 功能
    b N_LINE 在第N_LINE行上设置断点
    b func 在func函数上设置端点
    delete breakpoints 删除断点
    disable breakpoints 禁用断点
    enable 断点号 启动端点
    info breakpoints 查看断点列表
    break foo if x>0 设置条件断点

    观察点

    当待观察点被读 或 被写时,程序停下来,并输出相关信息

    命令 功能
    watch 设置写观察点
    rwatch 设置读观察点
    awatch 设置读写观察点
    info watchpoints 查看观察点列表

    Display跟踪点

    命令 功能
    display var 每次停下来时,显示设置的变量var的值
    undisplay 取消跟踪显示
    info display 设置读写观察点
    info watchpoints 查看跟踪列表

    相关文章

      网友评论

          本文标题:程序调试  |  GDB常用命令备忘录

          本文链接:https://www.haomeiwen.com/subject/azxkyttx.html