• GDB 多进程调试


    启动:

    $gdb <file>  || $gdb 然后(gdb)file <file>

    运行:

    (gdb)run <该程序本身的命令行参数>

    查看代码:

    (gdb)list  简写为 (gdb)l

    技巧(gdb)list 1,20   //查看1到20行的代码

     

    使用断点:

    建立断点

    (gdb)break  //可以简写为(gdb)b

    (gdb)b <function>   || <file>:<function>  //这种是为还没有打开的源代码设置断点

    (gdb)b <line>    || <file>:<line>   || <address>   //在一个物理地址设置断点

    查看断点

    (gdb)info b

     

    删除断点

    (gdb)delete <breakpoint number>

    (gdb)clear <line> || <file>:<line>

    条件断点

    (gdb)break <operator(通常是函数名)> if <op> = <value>  //用于在满足某个条件时中断执行,在该operator处暂停

     

    运行过程:

    单步跟踪:

    (gdb)step //缩写s

    往下执行:

    (gdb)next //缩写n

    检查数据:

    (gdb)display <varible>     //例如(gdb)display stack->index

    (gdb)print <varible>    //缩写p <varible>

    改变数据:

    (gdb)set <varible>=<value>      //例如set stack->index=100

    检查堆栈:

    (gdb)backtrace   //缩写bt, 将会打印当前调用的堆栈,从深到浅

    停止程序:

    (gdb)quit       //缩写q

     

    多进程调试:

    跟踪子进程:

    (gdb)set follow-fork-mode child

    跟踪父进程:

    (gdb)set follow-fork-mode parent

    设置gdb在fork时询问跟踪哪一个进程:

    (gdb)set follow-fork-mode ask

     

    多线程调试:

    如果某一行代码被多个线程使用,可以这样设置断点:

    (gdb)b pos.c:17 thread 5  //在地pos.c的17行设置断点,但只对第5个线程生效。

    (gdb)info threads  //查看当前应用程序中所有的线程

    (gdb)b pos.c:17 thread 5 if ret > 0  //在pos.c的17行设置断点,当内部栈变量ret > 0 时中断

    去指定线程:

    (gdb)thread <thread number>

    锁定调度器来避开gdb根据优先权来改变当前线程:

    (gdb)set scheduler-locking on/off

    确定当前模式

    (gdb)show scheduler -locking

    想所有线程应用一个命令:

    (gdb)thread apply all <command(比如backtrace)>

    (gdb)thread apply 1 4 9 backtrace

     

    调试已有的进程:

    $gdb

    挂接指定进程 :(gdb)attach <进程号>

    脱离指定进程 :(gdb)dettach

     

    调试内核转储文件:

    $test

    产生一个core文件,需要设置系统环境,见我的博客文章 www.cppblog.com/TianShiDeBaiGu/articles/125785.html

    $gdb test core.12345

    ??????????????????????????,没有尝试过的

    (gdb)wacth 监控一个变量改变

    (gdb)tbreak临时断点

    断点禁用启用

  • 相关阅读:
    在循环中正确找到对应DOM元素的索引
    JavaScript继承方式(1)
    JavaScript的写类方式(1)
    基于WF4的新平台地理模块的3D模块
    基于WF4的新平台流程模式(4)动态并发
    基于WF4的新平台流程模式(9)表单路由启动传入
    基于WF4的新平台地理模块的3D模块
    基于WF4的新平台流程模式(2)启动条件路由
    基于WF4的新平台表单设计器功能简介
    我的2010年
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/5525406.html
Copyright © 2020-2023  润新知