Windows 7 WinDbg不';无法在提供的路径中真正搜索pdb文件

Windows 7 WinDbg不';无法在提供的路径中真正搜索pdb文件,windows-7,windbg,Windows 7,Windbg,当我在简单的演示应用程序中提供一个符号路径时,它工作得很好,但在实际应用程序中,它不支持pdb!我以相同的方式添加两种情况下的路径(实际路径明显不同): 它可以在演示中工作的原因是我做了“打开可执行文件”。对于我的实际应用程序,我正在打开一个崩溃转储文件。但这真的有什么区别吗 我已确保提供了图像文件路径和符号路径,但详细输出没有显示任何迹象表明它正在所提供的文件夹中查找pdb文件或对其进行缓存 例如,在演示的情况下,下面一行指示缓存的文件(因此它被读取) 但实际应用程序的详细输出中并没有类似的行

当我在简单的演示应用程序中提供一个符号路径时,它工作得很好,但在实际应用程序中,它不支持pdb!我以相同的方式添加两种情况下的路径(实际路径明显不同):

它可以在演示中工作的原因是我做了“打开可执行文件”。对于我的实际应用程序,我正在打开一个崩溃转储文件。但这真的有什么区别吗

我已确保提供了图像文件路径和符号路径,但详细输出没有显示任何迹象表明它正在所提供的文件夹中查找pdb文件或对其进行缓存

例如,在演示的情况下,下面一行指示缓存的文件(因此它被读取)

但实际应用程序的详细输出中并没有类似的行,我在上面做了windows搜索。你有什么理由认为它可能不在那个文件夹中

请注意,我没有确切的pdb文件,我希望看到“不匹配的pdb”消息,但我没有得到

我也经历过,我没有访问实际构建机器的权限,但我希望它至少按照我给出的路径搜索文件

更新 .symapth的输出为:

0:000> .sympath+ C:\Test\56RC\Release
DBGHELP: Symbol Search Path: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
DBGHELP: Symbol Search Path: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
Symbol search path is: srv*;C:\Test\56RC\Release
Expanded Symbol search path is: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release

************* Symbol Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*
OK                                             C:\Test\56RC\Release

据我所知,WinDbg将在提供的路径中搜索。(实际上,这不是WinDbg,而是WinDbg将工作委托给,但出于简单的原因,我在下面将其称为WinDbg)

然而,我看到了,我可以重现你所遇到的问题

  • WinDbg不仅搜索立即可见的路径(
    .sympath
    .exepath
    .srcpath
    ),还搜索其他目录,例如存储在可执行文件自身调试目录中的PDB路径(请参阅)
  • 当被
    !sym noised
    WinDbg不会输出其搜索的所有路径。这是不幸的,但只有微软能改变这一点,所以我们不得不接受它。如有疑问,请与
    .pdb
    过滤器一起使用,以真正找出WinDbg试图访问符号的位置
  • 文档不完整、错误、过时或不完整,无论是在内置帮助中还是在web上。这让人很难理解。这适用于符号存储(想想从0层到3层、pingme.txt之类的东西)、符号路径语法(
    srv*
    symsrv*
    cache*
    和排序)或符号的加载顺序(在子文件夹中,如
    dll
    symbols
    symbols\dll

  • 是的,你现在很难回答,但是看看问题的历史,你已经学到了很多,并且已经习惯了,就像我和其他几个人一样。

    sympath的输出是什么?通过
    .sympath+
    它正在添加一个文件夹,因此我们不知道
    c:\test\app\pdb
    是否已在路径中。另外:是否使用EXE?找出WinDbg在何处查找符号的唯一正确方法是使用进程监视器。即使使用
    !sym noise
    我遇到WinDbg没有输出它搜索到的目录的情况。@ThomasWeller我将输出添加到问题中,exe呢?它是否包含指向PDB的路径?@ThomasWeller是的,这就是我一直在做的,创建了相同的路径并将PDB文件放在那里,但至少要说一句,它为什么不在我提供的路径中搜索,这很烦人。
    DBGHELP: c:\test\app\pdb\App.pdb cached to C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\FF12D89B77D742CAB1CB145EC85C2ABD1\App.pdb
    
    0:000> .sympath+ C:\Test\56RC\Release
    DBGHELP: Symbol Search Path: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
    DBGHELP: Symbol Search Path: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
    Symbol search path is: srv*;C:\Test\56RC\Release
    Expanded Symbol search path is: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
    
    ************* Symbol Path validation summary **************
    Response                         Time (ms)     Location
    Deferred                                       srv*
    OK                                             C:\Test\56RC\Release