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

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


更多精彩内容
👉个人内容分类汇总 👈
👉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、下载地址

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. 找到刚才运行的程序,右键转到详细信息;

    在这里插入图片描述

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

    drmingw -p 8132
    

    在这里插入图片描述

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

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

    在这里插入图片描述

1.2 安装为默认JIT调试器

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

    在这里插入图片描述

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

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

    在这里插入图片描述

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

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

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

5、总结

  • drmingw是一个使用非常简单的调试工具,没有GDB、Windbg这些工具的复杂命令;
  • 可以支持调试MinGW、MSVC编译的程序;
  • 在重新退出时可以非常快速的显示调试结果,定位异常位置;
  • 但是使用简单就意味着对于一些复杂的bug调试可能就不那么好用了,但是还是值得一用。
  • drmingw还有一些其它用法,可以看github仓库里面的说明。
posted @ 2023-04-10 11:11  mahuifa  阅读(0)  评论(0编辑  收藏  举报  来源