首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinDbg预览未加载压缩的.pd_符号文件

WinDbg预览未加载压缩的.pd_符号文件
EN

Stack Overflow用户
提问于 2020-04-06 21:50:04
回答 1查看 772关注 0票数 0

WinDbg预览

我的符号路径是:

代码语言:javascript
复制
     SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols

符号文件夹

代码语言:javascript
复制
     c:\Symbols\HelloWorld64.pdb\408F6A6B3154428DA5DB17FDD17ABAEE1\

这两个文件

代码语言:javascript
复制
    HelloWorld64.pd_
    refs.ptr

为了创建上面压缩的.pd_,我使用了/compress选项

代码语言:javascript
复制
    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.pdb\408F6A6B3154428DA5DB17FDD17ABAEE1\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

代码语言:javascript
复制
    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.pdb\408F6A6B3154428DA5DB17FDD17ABAEE1\HelloWorld64.pdb - file not found
     SYMSRV:  RESULT: 0x00000000
     DBGHELP: HelloWorld64.pdb - file not found
     DBGHELP: HelloWorld64 - no symbols loaded

有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 16:48:25

只有当您有压缩的pdb时,symsrv才能与未压缩的pdb一起工作,您需要一个缓存,在此缓存可以解压缩版本10.0.19528.1000 AMD64上的演练。

如果使用symstore存储压缩的pdb,则需要一个本地缓存来解压缩它,然后symsrv才能找到它。

代码语言:javascript
复制
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.pdb\3C481DA1FE5E450F947D744F14D014272\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存储

代码语言:javascript
复制
F:\src\deto>dir /s /b f:\symbols\deto.pdb\3C481DA1FE5E450F947D744F14D014272\
f:\symbols\deto.pdb\3C481DA1FE5E450F947D744F14D014272\deto.pd_
f:\symbols\deto.pdb\3C481DA1FE5E450F947D744F14D014272\refs.ptr

临时更改符号路径以添加本地缓存

代码语言:javascript
复制
0:000> .sympath srv*f:\test*f:\symbols
DBGHELP: Symbol Search Path: srv*f:\test*f:\symbols

执行.reload符号现在可以在f:\test中访问(它还将在访问f:\ ntdll.pdb之前将ntdll.pdb和其他符号从f:\符号复制到f:\test

“压缩”选项主要用于符号服务器操作(在这些操作中,您有千兆字节的符号,用于千兆字节的版本),如果您编译它们,只需存储,然后解压缩,并消除头痛。

代码语言:javascript
复制
0:000> .reload /f
Reloading current modules
.SYMSRV:  BYINDEX: 0x8
         f:\test*f:\symbols
         deto.pdb
         3C481DA1FE5E450F947D744F14D014272
SYMSRV:  UNC: f:\test\deto.pdb\3C481DA1FE5E450F947D744F14D014272\deto.pdb - path not found
SYMSRV:  UNC: f:\test\deto.pdb\3C481DA1FE5E450F947D744F14D014272\deto.pd_ - path not found
SYMSRV:  UNC: f:\test\deto.pdb\3C481DA1FE5E450F947D744F14D014272\file.ptr - path not found
SYMSRV:  UNC: f:\symbols\deto.pdb\3C481DA1FE5E450F947D744F14D014272\deto.pdb - file not found
SYMSRV:  deto.pd_ from f:\symbols: uncompressed
SYMSRV:  PATH: f:\test\deto.pdb\3C481DA1FE5E450F947D744F14D014272\deto.pdb
SYMSRV:  RESULT: 0x00000000
DBGHELP: deto - private symbols & lines 
        f:\test\deto.pdb\3C481DA1FE5E450F947D744F14D014272\deto.pdb
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61069507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档