zoukankan      html  css  js  c++  java
  • GDB使用总结

    http://witmax.cn/gdb-usage.html

     

    首先GDB可以自动化调试,但是我不会

     

    首先编译的时候要加上 -g选项

     

    分屏使用GDB:  gdb  -tui

     

     

     

    GDB中加载程序 :                        file  文件名

     

    设置参数:                                  set args 参数

     

    设置观察点(当有变化就停下):               watch 表达式/变量名

     

    清除停止点:                                clear  行号/函数名

     

    加断点:    b  行号/函数名

     

    输出内存:  x  addr

     

    单步调试: s(不进入函数) / n(进入函数)

     

    打印堆栈:                                  bt

     

    显示源码:                             l  行号/函数名

     

    修改默认的listsize:                          set listsize count

     

    输出变量或者数组:                          变量名/*数组名@长度

     

    自动显示变量: display 变量名

     

    查看寄存器: i  r

     

    改变程序运行:

     

     

    GDB调试多线程

    默认调试多个线程。多个线程同时执行,

    使用“info threads”查看当前的线程数和线程的线程号。

    使用“thread 线程号”可以切换线程。

    使用单步调试的话走的是当前线程,但是也可以在其他线程的函数里设置断点。

    因为进行多线程调试的时候使用s或者c或者所有线程是同步执行的,如果只想让当前进程被执行可以使用“set scheduler-locking off|on|step on只有当前被调试程序会执行,step是在单步的时候,除了next过一个函数外,只有当前线程会执行,off是所有线程都执行。

    GDB调试多进程

    默认调试的是主进程,但是其他的进程会在后台执行,不被调试的进程会后台执行。

    可以通过“set follow-fork-mode [parent|child]   set detach-on-fork [on|off]”来让GDB同时调试多个进程。其中参数如下:

    parent                   on               只调试主进程(GDB默认)
    child                     on               只调试子进程
    parent                   off              同时调试两个进程,gdb跟主进程,子进程block在fork位置
    child                     off             同时调试两个进程,gdb跟子进程,主进程block在fork位置

     

    查询正在运行的进程:info inferiors

    切换调试的进程:    inferior <infer number>

    GDB调试core dump

    使用GDB确定程序挂在哪里,我们只需要四步:

    Ulimit -c unlimited //设置可以生成转储文件

    Gcc -g 文件名 -o 程序名; //生成转储文件

    Gdb 程序名 转储文件名; //定位





  • 相关阅读:
    HTML5 GAME TUTORIAL(三): Draw shapes, paths and text(译)
    HTML5 GAME TUTORIAL(二): Set-up an HTML5 canvas(译)
    HTML5 GAME TUTORIAL(一): Develop an HTML5 game(译)
    实现一个扇形的几种方法
    What Is Webpack and How Does It Work(译)
    What Does Webpack Do, and How Do I Use It for My Website?(译)
    Getting Started with NestJS(译)
    vue 渲染出来的列表点击的时候需要单独给li添加一个class
    移动端使用isscroll.js input无法获取焦点(就是点了没反应啦!)
    移动端适配之rem 笔记
  • 原文地址:https://www.cnblogs.com/dchipnau/p/5255388.html
Copyright © 2011-2022 走看看