Debugging Tools for Windows |
.dump 命令创建一个用户模式或内核模式崩溃转储文件。
.dump /?
(用户模式:) 创建一个完整用户模式dump。不管怎么称呼,最大的minidump文件实际比完整用户模式dump文件包含更多信息。例如, .dump /mf 或.dump /ma 会创建比.dump /f创建更大更完整的文件。在用户模式下,.dump /m[MiniOptions] 总是比.dump /f更可取。
用户模式下,/m 后面可以跟附加的MiniOptions 用来指定dump文件中包含的数据。如果没有使用MiniOptions ,dump文件包含模块、线程和调用堆栈信息,但是没有其他附加信息。可以使用下面的任意MiniOptions 来改变dump文件的内容,它们区分大小写。
MiniOption | 作用 |
---|---|
a | 创建一个包含所有附加选项的minidump。/ma选项相当于/mfFhut —它会在minidump中添加完整的内存数据、句柄数据、已卸载模块信息、基本内存信息和线程时间信息。 |
f | 在minidump中包含完整内存数据。目标程序拥有的所有 可访问的已交付的页面(committed pages)都会包含进去。 |
F | 在minidump中添加所有基本内存信息。这会将一个流加入到包含完整基本内存信息的minidump中,而不单是可使用的内存。这样可以使得调试器能够重建minidump生成时进程的完整虚拟内存布局。 |
h | 在minidump中包含和目标进程相关的句柄信息。 |
u | 在minidump中包含已卸载模块信息。仅在Windows Server 2003和之后版本的Windows中可用。 |
t | 在minidump中包含附加的线程信息。包括可以在调试minidump时使用!runaway扩展命令或.ttime (Display Thread Times)命令进行显示的线程时间。 |
i | 在minidump中包含次级内存(secondary memory)。次级内存是由堆栈中的指针或备份存储(backing store)中引用到的任何内存,加上该地址周围的一小段区域。 |
p | 在minidump中包含进程环境块(PEB)和线程环境块(TEB)。这在想访问程序的进程和线程相关的Windows系统信息时很有用。 |
w | 将所有已交付的可读写的私有页面包含进minidump。 |
d | 在minidump中包含可执行映像中所有可读写的数据段。 |
c | 加入映像中的代码段。 |
r | 从minidump中去掉对重建调用堆栈无用的堆栈和存储内存部分。局部变量和其他数据类型值也被删除。这个选项不会使得minidump变小(因为这些内存节仅仅是变成0),但是当想保护其他程序中的机密信息时有用。 |
R | 在minidump中去掉完整的模块路径。仅包含模块名。如果想保护用户的目录结构时该选项有用。 |
这些MiniOptions 只能在创建用户模式minidump时使用。它们需要跟在 /m 修饰符后面。
模式 | 用户模式、内核模式 |
目标 | 活动目标、崩溃转储 |
平台 | 所有 |
该命令可以在各种情况下使用:
可以控制dump文件的类型:
不能指定要转储的进程。所有运行中的进程都会转储下来。
/xc、 /xr、 /xp和 /xt 选项用来在dump文件中保存异常和上下文信息。这使得该dump文件可以使用 .ecxr (Display Exception Context Record)。
下面的示例创建一个包含完整内存和句柄信息的用户模式minidump:
句柄信息可以通过!handle扩展命令来读取。
内核模式dump文件和对它们使用的说明,查看内核模式Dump文件。用户模式dump文件和它们的使用的说明,查看用户模式Dump文件。