美文网首页
gdb调试基本方法

gdb调试基本方法

作者: 卐卍扫地僧卐卍 | 来源:发表于2018-11-30 23:51 被阅读0次

    gdb调试基本方法

    gdb调试常用命令

    命令 命令缩写 命令说明
    list l 显示多行源代码
    break b 设置断点
    info i 描述程序的状态
    display disp 跟踪查看某个变量
    print p 打印内部变量值
    frame f 查看栈帧
    backtrace bt 查看函数调用信息
    watch   监视变量值的变化
    set var name=v   设置变量的值
    start   执行代码(停在main的第一条语句)
    run r 运行代码
    step s 执行下一条语句(会进入调用函数)
    next n 执行下一条语句(不进入调用函数)
    continue c 继续运行程序
    kill k 终止正在调试的程序
    file   加载需要调试的程序
    quit q 退出

    在GDB中运行程序

    命令 说明 例子
    gdb <program> 启动gdb gdb test
    set args 设置运行时参数 set args 12 13
    show args 查看运行参数  
    path <dir> 设置程序运行路径  
    show paths 查看程序运行路径  
    set environment varname [= value] 设置环境变量 set env USER=ww
    show environment [varname] 查看环境变量  
    cd <dir> 切换路径  
    pwd 显示当前路径  
    run > outfile 重定向控制程序输出  

    断点(BreakPoint)

    命令 说明 例子
    break [function] 进入指定函数时停住 c++ calss::function/function(type,type)
    break [filename:function] 在源文件filename的function函数入口处停住  
    break [linenum] 指定行号停住  
    break [filename:linenum] 在源文件filename的linenum行停住  
    break [+offset] 当前行的前offset行停住  
    break [-offset] 当前行的后offset行停住  
    break ... if condition 满足条件停住  
    info breakpoints [n] 查看断点信息  
    info break [n] 查看断点信息  
    clear 清除所有已定义的停止点  
    clear [function] 清除函数所有已定义的停止点  
    clear [filename:function] 清除函数所有已定义的停止点  
    clear [linenum] 清除指定行的停止点  
    clear [filename:linenum] 清除指定行的停止点  
    delete [breakpoints] [range...] 删除指定的停止点  
    disable [breakpoints] [range...] 失能指定的停止点  
    enable [breakpoints] [range...] 使能指定的停止点  
    enable [breakpoints] once [range...] 使能指定的停止点一次后自动disable  
    enable [breakpoints] delete [range...] 使能指定的停止点一次后自动删除  

    观察点(WatchPoint)

    命令 说明 例子
    watch [expr] 为expr设置观察点  
    rwatch [expr] expr被读时,停止程序  
    awatch [expr] expr被读或写时,停止程序  
    info watchpoints 列出当前所有观察点  

    运行/单步

    命令 说明 例子
    continue/c/fg [ignor-count] 恢复程序运行  
    step [count] 会进入函数调用  
    next [count] 不会进入函数调用  
    set step-mode on 打开step-mode模式  
    set step-mode off 关闭step-mode模式  
    finish 运行程序至当前函数完成返回,并打印返回时的堆栈地址、返回值、参数值等信息  
    until/u 运行程序至退出循环体  
    stepi/si 单步执行机器指令  
    nexti/ni 单步执行机器指令  
    display /i $pc 打开汇编代码  

    查看堆栈信息

    命令 说明 例子
    backtrace/bt [n] 打印栈信息  
    info args 打印出当前函数的参数名及值  
    info locals 打印当前函数中所有局部变量及值  

    查看源程序

    6.png

    查看运行数据

    7.png

    相关文章

      网友评论

          本文标题:gdb调试基本方法

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