我多年来一直使用!heap -p -a来完成各种任务.现在我开始使用最新的Win8 sdk中的WinDbg 6.2.9200在Win8上进行调试.
在这里,我发现!heap -p -a并不总是有效,并且来自!address的输出"广告"!heap -x的使用(见下文).
看完了!堆 - ?,我无法理解差异!知道差异的人吗?
您使用哪个命令来查看堆块的详细信息?
0:008> !address 335168f8
<cut cut>
Usage: Heap
Base Address: 32b43000
End Address: 33540000
Region Size: 009fd000
State: 00001000 MEM_COMMIT
Protect: 00000004 PAGE_READWRITE
Type: 00020000 MEM_PRIVATE
Allocation Base: 32570000
Allocation Protect: 00000004 PAGE_READWRITE
More info: heap owning the address: !heap 0xa80000
More info: heap segment
More info: heap entry containing the address: !heap -x 0x335168f8
0:008> !heap -x 0x335168f8
Entry User Heap Segment Size PrevSize Unused Flags
----------------------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 我有一个来自Win 8.1/64的用户模式转储,转储是在Wer对话时附加Windbg.然后.ecxr显示了Windbg注入线程的ntdll!DbgBreakPoint.(像平常一样)
我已经通过检查所有堆栈来识别线程,并找到具有以下内容的线程:
# Call Site
00 ntdll!NtWaitForMultipleObjects
01 KERNELBASE!WaitForMultipleObjectsEx
02 kernel32!WerpReportFaultInternal
03 kernel32!WerpReportFault
04 KERNELBASE!UnhandledExceptionFilter
05 ntdll!RtlUserThreadStart$filt$0
06 ntdll!_C_specific_handler
07 ntdll!RtlpExecuteHandlerForException
08 ntdll!RtlDispatchException
09 ntdll!KiUserExceptionDispatch
10 <My faulty code which generated the exception>
Run Code Online (Sandbox Code Playgroud)
kvn aslo发布一个TrapFrame @ 00000000`0379ed28)
09 00000000`0379e900 00000000`00250bc8 : 00000000`00000000 00000000`0026ca09 00000000`0379f160 00000000`0379f168 : ntdll!KiUserExceptionDispatch+0x2e (TrapFrame @ 00000000`0379ed28)
Run Code Online (Sandbox Code Playgroud)
有没有办法使用陷阱框架来获取上下文记录以输入.cxr?或者是找到异常上下文的其他可能性?
我的印象是转储产生了我的winDbg
.dump /ma
Run Code Online (Sandbox Code Playgroud)
不仅包含完整的转储
配置WER解释DumpType 0:自定义转储CustomDumpFlags的按位组合 MINIDUMP_TYPE 但是,十六进制值给出转储类似的垃圾场作为使用.dump/MA
所有的位组合对我来说都有点压倒性的.