【发布时间】:2012-11-22 20:40:23
【问题描述】:
我正在使用 WinDbg 为 Windows 调试内核模式设备驱动程序。 是否可以按需创建小型转储?
我的意思是,我的一个断点被击中,系统停止了。我想创建一个小型转储(假设只有堆栈)。这个有 WinDbg 关键字吗?
提前致谢
【问题讨论】:
我正在使用 WinDbg 为 Windows 调试内核模式设备驱动程序。 是否可以按需创建小型转储?
我的意思是,我的一个断点被击中,系统停止了。我想创建一个小型转储(假设只有堆栈)。这个有 WinDbg 关键字吗?
提前致谢
【问题讨论】:
当遇到断点时,您可以像这样编写一个小型转储:
bp myDLL!myFunc ".dump /ma c:\myDump.dmp;g"
这将为您的函数添加一个断点并执行引号中的命令,这将写入一个带有大多数标志的小型转储,然后继续。
有关.dump 和here 的更多信息,请参阅herebp 语法。
在用户或内核模式下转储完整的内存:
.dump /f
但/ma 开关实际上为用户模式提供了更多信息。
如果出现错误:
Unable to create file 'c:\myDump.dmp' - Win32 error 0n5
"Access is denied."
尝试将文件写入 c:\users\public\ 目录。
.dump /f c:\users\public\myDump.dmp
【讨论】:
请注意,.dump 不能创建内核内存转储,只能创建完整或小内存转储(/f 或 /m)。要获取内核内存转储,您需要使用控制面板启用转储文件的写入,然后在调试器中使用 .crash 触发崩溃,这将导致转储文件被写入。
有关如何使用它的更多详细信息,请参阅 .crash 的 windbg 帮助,包括指向“创建内核模式转储文件”的链接。
【讨论】: