捉虫笔记(五)-WinDbg调试3个时机

1、调试时机

我把WinDbg按照调试的时机,分为三种:

1.1、事前调试

有的时候我们需要项VS调试一样,直接F5启动调试。

1.2、事中调试

进程先启动,中途我想附加调试。

1.3、事后调试

进程遇到异常退出,自动呼出调试器调试。

但是需要注意如果有其他的异常处理程序,则可能无法呼出调试器。

2、配置助手软件

但是在开发过程中,需要灵活处理这些时机。每次手动修改配置,着实费劲,所以我写了个小工具,可以自动化。

我们先看下软件截图:

2.1、软件操作方式

在软件启动的时候会搜索全盘路径,找到windbg.exe或者DbgX.Shell.exe(预览版),显示在WinDbg路径一栏。

  • 镜像文件映射

​ 为了模仿想vs一键启动调试,利用了镜像文件映射方法,只要你启动了被调试的程序,WinDbg就会自动启动并进入调试状态。

  • 附加进程

​ 最右侧的刷新按钮,可以刷新进程。接着选择你要附加的进程即可,注意这个过程稍微慢一点。

  • 事后调试

​ 事后调试,英文叫做:postmortem debug,当应用程序崩溃时,自动调用WinDbg附加上去。注意如果软件内部拦截了崩溃异常信息则不会唤起WinDbg.

2.2、注意事项
  • 无法附加和镜像文件映射

​ 此时需要查看你选择的WinDbg版本是否正确,比如x86和x64版本,但是你要是选择WinDbg预览版则没有这个问题。

  • 每次操作都需要注意你选择的WinDbg版本。
  • 已经过滤arm版本的WinDbg。
  • 如果使用WinDbg Preview版本在镜像映射模式下调试带有管理权权限的程序,需要将WinDbg Preview复制一份出来,测试选择复制出来的WinDbg版本。

3、源码地址

https://github.com/MingYueRuYa/dbg_assisant

相关推荐
zhuqiyua2 天前
深入解析Kernel32.dll与Msvcrt.dll
汇编·microsoft·windbg·二进制·dll
可均可可2 个月前
Advanced .Net Debugging 11:完结篇
windbg·sos·net 高级调试·ntsd
鬼才2 个月前
记一次 公司.NET项目部署在Linux环境压测时 内存暴涨分析
windbg·dump
可均可可5 个月前
Advanced .Net Debugging 10:事后调试
windbg·任务管理器·dump·ntsd·事后调试