!堆失败(类型信息无效)



操作系统: Windows 10 x64 1909

目标进程:lec06_1.exe(32 位(

0:003> !heap
Invalid type information
0:003> dt ntdll!_HEAP
Symbol ntdll!_HEAP not found.
0:003> dt ntdll!_HEAP_ENTRY
Symbol ntdll!_HEAP_ENTRY not found.

0:003> lm
start    end        module name
001c0000 001c6000   lec06_1    (deferred)             
706e0000 707ce000   MSVCR120   (deferred)             
74f70000 75050000   KERNEL32   (deferred)             
759c0000 75bbc000   KERNELBASE   (deferred)             
77410000 775aa000   ntdll      (pdb symbols)          C:ProgramDatadbgsymwntdll.pdbD85FCE08D56038E2C69B69F29E11B5EE1wntdll.pdb

这个替代方案对我不起作用。

.symfix
.reload

我现在该怎么办?请..

在 Windows 10(版本 1909,x64(上使用 WinDbg 中的!peb扩展时,我遇到了类似的问题:

0:000>!peb
PEB at 0115d000
error 3 InitTypeRead( nt!_PEB at 0115d000)...

具有 pdb 签名D85FCE08D56038E2C69B69F29E11B5EE1的 wntdll.pdb 文件不包含任何类型信息。这是一个只能通过Microsoft来解决的问题

但是,我找到了一个似乎适用于我的情况的解决方法:

  • 找到一个旧版本的 wntdll.pdb它仍然包含类型信息(我使用了签名为50D4EDAA6B13688D234F3E853C20E0A31的.pdb,并使用 https://github.com/microsoft/microsoft-pdb 中的 cvdump 工具检查了类型信息是否存在(

  • 如果仍然加载,则使用.reload /u卸载 windbg 中的符号

  • 重命名D85FCE08D56038E2C69B69F29E11B5EE1文件夹中的当前.pdb

  • 复制(而不是移动!(D85FCE08D56038E2C69B69F29E11B5EE1文件夹中较旧的 wntdll.pdb

  • 从 http://www.debuginfo.com/tools/chkmatch.html 下载 CHKmatch工具

  • 按如下方式运行 chkmatch 工具(确保将 [符号路径] 替换为您正在使用的符号缓存目录(

    chkmatch -m C:windowssyswow64ntdll.dll [symbolpath]wntdll.pdbD85FCE08D56038E2C69B69F29E11B5EE1wntdll.pdb
  • 使用.reload重新加载 windBG 中的符号

  • 检查缺少的类型信息现在是否可用(例如,在您的情况下使用dt ntdll!_HEAP!heap

通过这种方法,我能够获得我缺少的过程环境块信息。我希望它也适用于您的情况。

最新更新