gdb调试命令

gdb调试命令

启动gdb调试:
    gdb program --------> 启动名为program可执行文件的调试
    gdb program PID ----> 调试一个正在运行的程序,根据程序名和进程号PID(ps可以查看PID)
    gdb program . attach PID --> 调试一个正在运行的程序,根据程序名进入gdb,attach关联进程
    gdb program core ---> 用gdb同时调试一个程序和其执行出错产生的core dump文件
    
显示源代码:
    l/list  ------------> 从第一行开始列出源码
    list LINENUM -------> 显示程序第LINENUM行周围的源程序
    list FUNC ----------> 显示FUNC函数的源程序
    list/list- ---------> 显示当前行后面/前面的源程序,一般是5行
    set listsize COUNT -> 设置一次显示源代码的行数
    show listsize ------> 查看当前listsize的设置
    list FIRST, LAST --> 显示从first行到last行的源码
    
设置断点:
    break NUM  ---------> 在源码的第NUM行设置断点
    break FUNC  --------> 在FUNC函数入口处设置断点
    info break  --------> 查看断点信息
    break +offset/-offset ------> 在当前行号的 前面或后面的offset行停住
    break filename:linenum -----> 在源文件filename的linenum行停住
    break filename:func --------> 在源文件filename的func函数入口处停住
    break …… if <condition> ----> 当if语句条件成立时,停住
    
运行步骤:
    r/run --------------> 运行程序
    n/next -------------> 逐语句执行
    c/continue ---------> 继续运行程序
    p/print ------------> 打印变量的值
    finish -------------> 退出函数
    q ------------------> 退出gdb

命令行参数:    
    set args -----------> 设置命令行参数
    show args ----------> 显示命令行参数
    
线程信息:
    info threads -------> 查看线程信息
    thread TID ---------> 切换到TID对应的线程
    break LINENUM thread TID -----> 在源程序的LINENUM行给TID线程设置断点
        例:(gdb) break frik.c:13 thread 28 if bartab > lim
    
堆栈信息:
    bt -----------------> 打印当前函数调用栈的所有信息
    bt N ---------------> 只打印栈顶上N层的栈信息
    bt -N --------------> 只打印栈底下N层的信息
    f/frame NUM --------> 切换到NUM对应的栈,0表示栈顶
    up/down NUM --------> 向栈的上面/下面移动NUM层
    info f/frame -------> 打印详细的当前栈层信息
    info args ----------> 打印出当前函数的参数名及其值
    info local ---------> 打印出当前函数中所有局部变量及其值
    info catch ---------> 打印当前函数中的异常处理信息
    
补充:
    p *array@len -------> 显示数组内容
    x/examine ADDR -----> 显示内存地址ADDR的值
    display EXPR -------> 自动显示EXPR变量的值
    
    
    
    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值