更多精彩内容 |
---|
个人内容分类汇总 |
C++软件调试、异常定位 |
PDF版下载 |
Dr.MinGW是一个实时(JIT)调试器,使用命令行运行。
当应用程序抛出未经处理的异常时,Dr.MinGW会将自己连接到应用程序,并使用可用的调试信息收集有关异常的信息。
Dr.MinGW可以读取由GUN C/C++编译器(Linux 下GCC、Windows下MinGW)生成的DWARF格式的调试信息,以及由Microsoft Visual C++编译器生成的PDB文件中的调试信息。它依赖于DbgHelp库来解析由Microsoft工具编译的模块中的符号。
解析符号和转储堆栈回溯的功能是以DLL的形式提供的,因此它可以嵌入到您的应用程序/工具中。
缩写 | 完整选项 | 功能说明 |
---|---|---|
-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 | 调试时输出详细信息 |
运行一个可执行程序,打开任务管理器;
找到刚才运行的程序,右键转到详细信息;
打开一个命令行窗口,查看任务管理器中选中的进程的PID号,使用下列命令将drmingw附加到进程;
drmingw -p 8132
回车后会弹出一个Dr.MinGW的窗口,但里面什么都没有;
当附加的程序出现异常退出时,就会在drmingw窗口中显示调试信息,定位异常位置(需要是附带调试信息的程序,如果是release的就可能无法定位)。
以管理员身份打开一个命令行窗口;
输入下列命令,将drmingw注册到AeDebug,作用默认的JIT调试器;
drmingw -i # 显示简单信息
drmingw -i -v # 显示详细信息
只要有进程出现异常退出就会触发drmingw,弹出一个窗口,显示调试信息;
当不需要使用drmingw调试时可以使用下列命令卸载安装;
drmingw -u
注意:如果AeDebug中已经注册了其它调试工具,例如WinDbg、procdump等,在安装drmingw时会把之前的覆盖。
- drmingw是一个使用非常简单的调试工具,没有GDB、Windbg这些工具的复杂命令;
- 可以支持调试MinGW、MSVC编译的程序;
- 在重新退出时可以非常快速的显示调试结果,定位异常位置;
- 但是使用简单就意味着对于一些复杂的bug调试可能就不那么好用了,但是还是值得一用。
- drmingw还有一些其它用法,可以看github仓库里面的说明。