如果你还不清楚什么是转储文件,不知道什么时候需要转储文件,请参考转储文件系列文章的第一篇 —— 转储文件知多少。
前言
前面几篇文章主要介绍了用户态转储文件(User-Mode Dump File)相关的内容。相信通过前面几篇文章的介绍,大家对用户态转储文件的抓取方法有了进一步的了解。接下来的几篇文章将介绍如何保存内核态转储文件(Kernel-Model Dump File)。
在上一篇介绍 JIT Debugging 的文章 —— 你需要了解的JIT Debugging 中,我们了解到 procdump 设置为 JIT调试器的时候,在设置的参数中,有一个叫 %p 的参数(需要和 -j 一起使用),指向了 JIT_DEBUG_INFO。今天简单介绍一下 JIT_DEBUG_INFO。
如果你还不清楚什么是转储文件,不知道什么时候需要转储文件,请参考转储文件系列文章的第一篇 —— 转储文件知多少。
细心的小伙伴可能注意到了,我在上一篇介绍抓取转储文件的工具的文章 —— 你需要知道的 N 种抓取 dump 的工具 中提到了:
如果用
64位的windbg附加到32位目标进程后,直接执行.dump命令生成的转储文件会 “有问题”。
经常抓 dump 的小伙伴很可能遇到过这个问题。具体是什么问题呢?我们一起看看吧。
如果你还不清楚什么是转储文件,不知道什么时候需要转储文件,请参考转储文件系列文章的第一篇 —— 转储文件知多少。
我在 你需要知道的 N 种抓取 dump 的工具 这篇文章里,向大家介绍了几款可以抓取转储文件的工具及其简单用法。不知道大家是否还记得,以管理员权限运行 procdump -i 可以注册 procdump 为事后调试器。大家是否了解其实现原理?今天让我们一起揭开其神秘面纱。
项目里的一个升级程序偶尔会死锁,查看dump后发现是死在了ShellExecuteExW里。经验少,不知道为什么,于是在高端调试论坛里发帖求助,链接如下http://advdbg.org/forums/6520/ShowPost.aspx
根据张银奎老师的描述可知,应该是拥有关键段的线程意外结束了。仔细检查项目中的代码,发现程序中有使用TerminateThread()来强制杀线程的代码。很可疑,于是写了一个测试程序,还原了这个问题。