Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WinDbg can';找不到microsoft符号_Windbg - Fatal编程技术网

WinDbg can';找不到microsoft符号

WinDbg can';找不到microsoft符号,windbg,Windbg,我有一个简单的演示控制台程序要调试,但令人惊讶的是windbg无法从Microsoft默认存储中删除符号 我知道 .重新加载/f 我得到了总结: ************* Symbol Loading Error Summary ************** Module name Error ConsoleApp PDB not found : cache* Unable to locate the .pdb

我有一个简单的演示控制台程序要调试,但令人惊讶的是windbg无法从Microsoft默认存储中删除符号

我知道

.重新加载/f

我得到了总结:

************* Symbol Loading Error Summary ************** 
Module name            Error 
ConsoleApp             PDB not found : cache*
                Unable to locate the .pdb file in this location

                The system cannot find the file specified : SRV*https://msdl.microsoft.com/download/symbols
                The SYMSRV client failed to find a file in the UNC store, or there
                is an invalid UNC store (an invalid path or the pingme.txt file is
                not present in the root directory), or the file is present in the
                symbol server exclusion list.
符号文件路径为

srv*

我试图使用我自己的应用程序的pdf文件,但它甚至找不到microsoft符号

更新

在整理了其他问题之后,我可以把它复制回来。看来我只是看错了信息。由于错误消息指向Microsoft default store,我阅读它时感觉它在Microsoft store中找不到指定的文件…认为它没有连接/查找/下载Microsoft符号,而实际上主要错误是它没有找到我自己的应用程序的符号

不过,这一信息并不十分清楚。例如,当我设置并添加一个附加路径时,会说Ok

0:000> .sympath srv*c:\test\Symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello
DBGHELP: Symbol Search Path: srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello
DBGHELP: Symbol Search Path: srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello
Symbol search path is: srv*c:\test\Symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello
Expanded Symbol search path is: srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello

************* Symbol Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*c:\test\Symbols*https://msdl.microsoft.com/download/symbols
OK                                             c:\test\hello
现在,当I
重新加载/f
时,符号加载错误摘要如下:

************* Symbol Loading Error Summary **************
Module name            Error
App                    The system cannot find the file specified : srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols
                The SYMSRV client failed to find a file in the UNC store, or there
                is an invalid UNC store (an invalid path or the pingme.txt file is
                not present in the root directory), or the file is present in the
                symbol server exclusion list.

                       PDB not found : c:\test\hello\symbols\exe\App.pdb
                Unable to locate the .pdb file in this location

我不知道为什么无法加载路径
PDB not found:c:\test\hello\symbols\exe\App.PDB

什么是
srv*
意味着你只有这些吗?
路径在哪里?
比如说c:\符号 或者f:\mycrap\myuselesssymbols等

路径应该类似于srv*即X:\yyyyy*


您可以使用.symfix在之前设置默认符号路径。重新加载/f

在WinDbg会话的输出中有

************* Symbol Loading Error Summary ************** 
Module name            Error 
ConsoleApp             PDB not found : cache*
因此,
ConsoleApp
存在模块加载错误,这是您的应用程序,而不是Microsoft应用程序

当然,您尚未将应用程序的符号上载到Microsoft,因此无法在上找到这些符号

在我看来,你的申请是令人满意的

  • 或者是完全没有符号信息的发布版本
  • 包含符号信息的调试生成,但在应用程序中指定的路径中找不到符号
所以,

  • 除了Microsoft symbol服务器(请使用
    .symfix c:\path\to\Microsoft symbols
    )之外
  • 确保已为应用程序构建PDB(根据编程语言检查编译器和/或链接器设置)
  • 将您自己的符号添加到符号路径(
    .sympath+c:\path\to\pdb\
  • 。重新加载符号
语法是
srv*
,但实际上我从未见过有人在实践中使用它,因为人们希望从本地存储的符号中获益,从而提高性能

如果仍然不起作用,请使用
!sym NOISTING
用于对符号加载进行故障排除。
.pdb
的文件名过滤器应该会有所帮助

原因是

  • 即使使用
    !sym noise
    ,WinDbg不会列出它实际查找符号的所有路径
  • 符号加载顺序的文档不正确

    帮助文件说明符号是按此顺序加载的

    • X:\…\symbols\\.pdb
    • X:\…\\.pdb
    • X:\…\.pdb
    但我观察到的荷载顺序是

    • X:\…\.pdb
    • X:\…\\.pdb
    • X:\…\symbols\\.pdb

这是它为您设置的路径。symfix“如果在符号路径中包含字符串srv*,调试器将使用符号服务器从默认符号存储中获取符号”,这是正确的语法:
srv*C:\symbols*https://msdl.microsoft.com/download/symbols
我不再收到此错误的可能重复项,可能在我退出并重新启动WindBG后PDB在哪里?你把它放在c:\test\hello,c:\test\hello\symbols或者哪里了?同样重要的是:你是如何把它放在那里的?复制/粘贴或使用symstore?@ThomasWeller我并不是真的把pdb文件放在那里,我只是想看到它在那里搜索到的一条消息,但没有找到。我可以在修复其他问题后复制它,听起来好像我读错了。我已经更新了帖子。