操作系统: 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
通过这种方法,我能够获得我缺少的过程环境块信息。我希望它也适用于您的情况。