WinDbg 预览版未加载压缩的 .pd_ 符号文件
WinDbg Preview not loading compressed .pd_ symbol files
我的符号路径是:
SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
符号文件夹
c:\Symbols\HelloWorld64.pdb8F6A6B3154428DA5DB17FDD17ABAEE1\
有这两个文件
HelloWorld64.pd_
refs.ptr
为了创建上述压缩的 .pd_,我使用了 /compress option:
SymStore.exe add /compress /f "C:\Development\HelloWorld\Bin\HelloWorld\x64\HelloWorld64.pdb" /s C:\Symbols /t HelloWorld64-Release /v 2.47.0.1 /o
SYMSTORE MESSAGE: 0 alternate indexers registered
SYMSTORE MESSAGE: LastId.txt reported id 131
SYMSTORE MESSAGE: Final id is 0000000131
SYMSTORE MESSAGE: Copying
C:\Development\HelloWorld\Bin\HelloWorld\x64\HelloWorld64.pdb to C:\Symbols\HelloWorld64.pdb8F6A6B3154428DA5DB17FDD17ABAEE1\HelloWorld64.pd_ [Force: T, Compress: T]
SYMSTORE: Number of files stored = 1
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 0
但是,当加载 DMP 文件时,WinDbg 无法找到 .pd_ 而是寻找 .pdb:
DBGENG: C:\Development\HelloWorld\Bin\HelloWorld\x64\HelloWorld64.exe - Mapped image memory
SYMSRV: BYINDEX: 0x12
c:\symbols*http://msdl.microsoft.com/download/symbols
HelloWorld64.pdb
408F6A6B3154428DA5DB17FDD17ABAEE1
SYMSRV: UNC: c:\symbols\HelloWorld64.pdb8F6A6B3154428DA5DB17FDD17ABAEE1\HelloWorld64.pdb - file not found
SYMSRV: RESULT: 0x00000000
DBGHELP: HelloWorld64.pdb - file not found
DBGHELP: HelloWorld64 - no symbols loaded
有什么想法吗?谢谢!
symsrv 仅当您有压缩的 pdb 时才能使用未压缩的 pdb 您需要一个可以解压缩的缓存 下面的演练完成于
Microsoft (R) Windows 调试器版本 10.0.19528.1000 AMD64
如果您使用 symstore 来存储压缩的 pdb,那么在 symsrv 可以找到它之前,您需要一个本地缓存来解压缩它
0:000> .reload /f
Reloading current modules
.SYMSRV: BYINDEX: 0x2
f:\symbols*https://msdl.microsoft.com/download/symbols
deto.pdb
3C481DA1FE5E450F947D744F14D014272
SYMSRV: UNC: f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb - file not found
SYMSRV: RESULT: 0x00000000
DBGHELP: F:\src\deto\deto.pdb - file not found
DBGHELP: deto - no symbols loaded
上面没有找到符号,因为那里只有 deto.pd_ 存在,使用 symstore.exe
存储
F:\src\deto>dir /s /b f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\
f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pd_
f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\refs.ptr
临时更改了 sympath 以添加本地缓存
0:000> .sympath srv*f:\test*f:\symbols
DBGHELP: Symbol Search Path: srv*f:\test*f:\symbols
现在可以在 f:\test 中访问 .reload 符号(它还会将 ntdll.pdb 和其他符号从 f:\symbols 复制到 f:\test,然后再访问它们
compress 选项主要用于符号服务器操作(对于千兆字节的版本,你有数 PB 的符号)如果你编译它们只需存储然后解压缩并摆脱头痛
0:000> .reload /f
Reloading current modules
.SYMSRV: BYINDEX: 0x8
f:\test*f:\symbols
deto.pdb
3C481DA1FE5E450F947D744F14D014272
SYMSRV: UNC: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb - path not found
SYMSRV: UNC: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pd_ - path not found
SYMSRV: UNC: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\file.ptr - path not found
SYMSRV: UNC: f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb - file not found
SYMSRV: deto.pd_ from f:\symbols: uncompressed
SYMSRV: PATH: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb
SYMSRV: RESULT: 0x00000000
DBGHELP: deto - private symbols & lines
f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb
我的符号路径是:
SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
符号文件夹
c:\Symbols\HelloWorld64.pdb8F6A6B3154428DA5DB17FDD17ABAEE1\
有这两个文件
HelloWorld64.pd_
refs.ptr
为了创建上述压缩的 .pd_,我使用了 /compress option:
SymStore.exe add /compress /f "C:\Development\HelloWorld\Bin\HelloWorld\x64\HelloWorld64.pdb" /s C:\Symbols /t HelloWorld64-Release /v 2.47.0.1 /o
SYMSTORE MESSAGE: 0 alternate indexers registered
SYMSTORE MESSAGE: LastId.txt reported id 131
SYMSTORE MESSAGE: Final id is 0000000131
SYMSTORE MESSAGE: Copying
C:\Development\HelloWorld\Bin\HelloWorld\x64\HelloWorld64.pdb to C:\Symbols\HelloWorld64.pdb8F6A6B3154428DA5DB17FDD17ABAEE1\HelloWorld64.pd_ [Force: T, Compress: T]
SYMSTORE: Number of files stored = 1
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 0
但是,当加载 DMP 文件时,WinDbg 无法找到 .pd_ 而是寻找 .pdb:
DBGENG: C:\Development\HelloWorld\Bin\HelloWorld\x64\HelloWorld64.exe - Mapped image memory
SYMSRV: BYINDEX: 0x12
c:\symbols*http://msdl.microsoft.com/download/symbols
HelloWorld64.pdb
408F6A6B3154428DA5DB17FDD17ABAEE1
SYMSRV: UNC: c:\symbols\HelloWorld64.pdb8F6A6B3154428DA5DB17FDD17ABAEE1\HelloWorld64.pdb - file not found
SYMSRV: RESULT: 0x00000000
DBGHELP: HelloWorld64.pdb - file not found
DBGHELP: HelloWorld64 - no symbols loaded
有什么想法吗?谢谢!
symsrv 仅当您有压缩的 pdb 时才能使用未压缩的 pdb 您需要一个可以解压缩的缓存 下面的演练完成于 Microsoft (R) Windows 调试器版本 10.0.19528.1000 AMD64
如果您使用 symstore 来存储压缩的 pdb,那么在 symsrv 可以找到它之前,您需要一个本地缓存来解压缩它
0:000> .reload /f
Reloading current modules
.SYMSRV: BYINDEX: 0x2
f:\symbols*https://msdl.microsoft.com/download/symbols
deto.pdb
3C481DA1FE5E450F947D744F14D014272
SYMSRV: UNC: f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb - file not found
SYMSRV: RESULT: 0x00000000
DBGHELP: F:\src\deto\deto.pdb - file not found
DBGHELP: deto - no symbols loaded
上面没有找到符号,因为那里只有 deto.pd_ 存在,使用 symstore.exe
存储F:\src\deto>dir /s /b f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\
f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pd_
f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\refs.ptr
临时更改了 sympath 以添加本地缓存
0:000> .sympath srv*f:\test*f:\symbols
DBGHELP: Symbol Search Path: srv*f:\test*f:\symbols
现在可以在 f:\test 中访问 .reload 符号(它还会将 ntdll.pdb 和其他符号从 f:\symbols 复制到 f:\test,然后再访问它们
compress 选项主要用于符号服务器操作(对于千兆字节的版本,你有数 PB 的符号)如果你编译它们只需存储然后解压缩并摆脱头痛
0:000> .reload /f
Reloading current modules
.SYMSRV: BYINDEX: 0x8
f:\test*f:\symbols
deto.pdb
3C481DA1FE5E450F947D744F14D014272
SYMSRV: UNC: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb - path not found
SYMSRV: UNC: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pd_ - path not found
SYMSRV: UNC: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\file.ptr - path not found
SYMSRV: UNC: f:\symbols\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb - file not found
SYMSRV: deto.pd_ from f:\symbols: uncompressed
SYMSRV: PATH: f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb
SYMSRV: RESULT: 0x00000000
DBGHELP: deto - private symbols & lines
f:\test\deto.pdbC481DA1FE5E450F947D744F14D014272\deto.pdb