C++(Qt)软件调试---使用drmingw进行调试(10)

C++(Qt)软件调试—使用drmingw进行调试(10)

文章目录

  • C++(Qt)软件调试---使用drmingw进行调试(10)
    • 1、前言
      • 1.1 DrMinGW是什么
    • 2、下载地址
    • 3、使用效果演示
    • 3、命令行选项
    • 4、使用示例
      • 1.1 通过pid附加到进程
      • 1.2 安装为默认JIT调试器
    • 5、总结

更多精彩内容
个人内容分类汇总
C++软件调试、异常定位
PDF版下载

1、前言

1.1 DrMinGW是什么

  • Dr.MinGW是一个实时(JIT)调试器,使用命令行运行。

  • 当应用程序抛出未经处理的异常时,Dr.MinGW会将自己连接到应用程序,并使用可用的调试信息收集有关异常的信息。

  • Dr.MinGW可以读取由GUN C/C++编译器(Linux 下GCC、Windows下MinGW)生成的DWARF格式的调试信息,以及由Microsoft Visual C++编译器生成的PDB文件中的调试信息。它依赖于DbgHelp库来解析由Microsoft工具编译的模块中的符号。

  • 解析符号和转储堆栈回溯的功能是以DLL的形式提供的,因此它可以嵌入到您的应用程序/工具中。

2、下载地址

  • 可执行程序
  • github仓库

3、使用效果演示

  • 如下图所示,在可执行程序异常退出时Dr.MinGW自动启动捕获程序异常,定位到程序程序异常的位置。

3、命令行选项

  • 下表介绍了Dr.Mingw命令行选项。所有命令行选项都区分大小写。
缩写 完整选项 功能说明
-h –help 打印帮助并退出
-V –version 打印版本并退出
-i –install 安装到AeDebug,作为默认 JIT 调试器(drmingw作用于所有程序)
-u –uninstall 卸载
-p pid –process-id=pid 通过进程的PID编号将DrMingw附加到进程(drmingw作用于单个程序)
-e event –event=event 附加进程后发出事件信号
-b –breakpoints 将断点视为异常
-v –verbose 调试时输出详细信息

4、使用示例

1.1 通过pid附加到进程

  1. 运行一个可执行程序,打开任务管理器;

  2. 找到刚才运行的程序,右键转到详细信息;

    C++(Qt)软件调试---使用drmingw进行调试(10)_第1张图片

  3. 打开一个命令行窗口,查看任务管理器中选中的进程的PID号,使用下列命令将drmingw附加到进程;

    drmingw -p 8132
    

    C++(Qt)软件调试---使用drmingw进行调试(10)_第2张图片

  4. 回车后会弹出一个Dr.MinGW的窗口,但里面什么都没有;

  5. 当附加的程序出现异常退出时,就会在drmingw窗口中显示调试信息,定位异常位置(需要是附带调试信息的程序,如果是release的就可能无法定位)。

1.2 安装为默认JIT调试器

  1. 管理员身份打开一个命令行窗口;

    C++(Qt)软件调试---使用drmingw进行调试(10)_第3张图片

  2. 输入下列命令,将drmingw注册到AeDebug,作用默认的JIT调试器;

    drmingw -i          # 显示简单信息
    drmingw -i -v       # 显示详细信息
    

    C++(Qt)软件调试---使用drmingw进行调试(10)_第4张图片

  3. 只要有进程出现异常退出就会触发drmingw,弹出一个窗口,显示调试信息;

  4. 当不需要使用drmingw调试时可以使用下列命令卸载安装;

    drmingw -u
    
  5. 注意:如果AeDebug中已经注册了其它调试工具,例如WinDbg、procdump等,在安装drmingw时会把之前的覆盖。

5、总结

  • drmingw是一个使用非常简单的调试工具,没有GDB、Windbg这些工具的复杂命令;
  • 可以支持调试MinGW、MSVC编译的程序;
  • 在重新退出时可以非常快速的显示调试结果,定位异常位置;
  • 但是使用简单就意味着对于一些复杂的bug调试可能就不那么好用了,但是还是值得一用。
  • drmingw还有一些其它用法,可以看github仓库里面的说明。

你可能感兴趣的:(#,C++软件调试,qt,c++,drmingw,软件调试)