在Debug Driver时,我们经常需要用到kernel debug来抓取LOG,但是如果没有Kernel Debug,如何来抓取Debug LOG呢?
方法之一就是将log写到内存,在BSOD时,抓取kerenl memory dump文件进行分析,这里记录下这两个命令,用来查找内存块,写内存到文件。
1,
!poolfind TAG
2,
.writemem filename range
举例说明下吧,譬如在driver中,用ExAllocatePoolWithTag分配了一段0x1000长度的内存,Tag为“TSET",则在windbg窗口可以通过
!poolfind TEST 来找到这段内存块,会显示起始地址和长度信息,假设是0xf0000000,长度为0x1000。
*f0000000 :large page allocation, Tag is TEST, size is 0x1000 bytes
.writemem c:\test.log 0x20000000 L1000
则会将上述长度的内存写到文件c:\test.log中,可以直接查看LOG的内容了。
具体cmd可以参考:
!poolfind
http://msdn.microsoft.com/en-us/library/windows/hardware/ff564696(v=vs.85).aspx
.writemem
http://msdn.microsoft.com/en-us/library/windows/hardware/ff566176%28v=vs.85%29.aspx