哪里可以获得包含PDB的VC ++ 2005可再发行版本8.0.50727.5592?

时间:2013-02-21 12:21:42

标签: windows visual-c++ debug-symbols winsxs

有时我们客户的崩溃转储文件将包含对

的引用
mfc80u.dll  *C:\Windows\winsxs\x86_microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.5592_none_cbf62b764709d1c9\mfc80u.dll  N/A N/A No matching binary found.       20  8.00.50727.5592 11.01.2011 07:32    6E860000-6E96F000   memory.dmp: Native  
msvcr80.dll *C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.5592_none_d09196c24426e2d4\msvcr80.dll N/A N/A No matching binary found.       21  8.00.50727.5592 11.01.2011 06:17    74E40000-74EDB000   memory.dmp: Native  

问题是,我没有得到适当的堆栈跟踪,因为这些DLL(from April, 2011)被另一个补丁from June, 2011contrary to what I can find on the net取代,{{3 包含5592版本,但仅包含6195版本的CRT / MFC / ... DLL。

我们的可执行文件的清单指向版本8.0.50727.4053,但这没有帮助,因为此版本被5592以及之后的6195取代.SxSTrace输出如下:(只需忽略德语文本并查看版本数)

INFORMATION: Verweis "Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053"" wird aufgelöst.
...
    INFORMATION: Für ProcessorArchitecture "x86" wird der Verweis aufgelöst.
    INFORMATION: Für ProcessorArchitecture "x86" wird der Verweis aufgelöst.
        INFORMATION: Verweis für Kultur "Neutral" wird aufgelöst.
            INFORMATION: Bindungsrichtlinie wird angewendet.
                INFORMATION: Sucht nach Herausgeberrichtlinien in "C:\Windows\WinSxS\manifests\x86_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_517205a10f4550e3.manifest".
                INFORMATION: Die Assemblierungsversion wurde von der Herausgeberrichtlinie umgeleitet.
                INFORMATION: Die Bereitstellungsrichtlinien-Assemblierungsidentität ist Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".

现在,也许我可以从客户的PC上获取确切的DLL,但这仍然只留下了DLL,我仍然没有任何调试符号(PDB文件)。

因为,查看我的转储(例如对于kernel32),我可以看到通常所有系统DLL都应该从MS符号服务器(或其缓存)加载 -

kernel32.dll    C:\WINDOWS\Symbols\Cache\kernel32.dll\4e211484100000\kernel32.dll   N/A N/A Symbols loaded (source information stripped).   C:\WINDOWS\Symbols\Cache\wkernel32.pdb\0EB73428EC4E430FB8EDD94C5946855B2\wkernel32.pdb  3   6.01.7600.16850 16.07.2011 05:33    76820000-76920000   memory.dmp: Native  

我必须假设 Microsoft 从其符号服务器中清除了这些文件的5592版本,从而有效地阻止了任何有用的调试,如果客户PC确实包含2011年4月更新但不是2011年6月的更新。根据我从MS页面推断的内容,这些更新包含在Windows Update中,因此如果客户的更新机制不完整,我真的无能为力。

是否仍然从MS下载包含5592 DLL和PDB文件的原始补丁?


更新:MS符号服务器似乎包含5592 DLL版本的PDB文件,但包含DLL。 (现在这是否有意义是另一个问题,但也许这就是它与这些DLL一起使用的方式。)

我可以确定以下内容:

  • PDB for 4053:...\Cache\msvcr80.i386.pdb\7D5669C7431445CD84D149AE19FE3CD51\msvcr80.i386.pdb
  • PDB for 5592(因为WinDbg会加载那个):...\cache\msvcr80.i386.pdb\3FA5DD7B7FAF4F2EAC5ABEDC03012DB21\msvcr80.i386.pdb
  • PDB for 6195:...Cache\msvcr80.i386.pdb\54C9E2F351544D1CB39517DC4B299EA81\msvcr80.i386.pdb

1 个答案:

答案 0 :(得分:0)

使用 WinDbg 分析(完整)转储所需的pdb文件 - WinDbg不需要二进制文件,但Visual Stuido(2005)调试器 似乎需要二进制文件。

所以在这种情况下不要使用VS,而是使用WinDbg来分析这个特定的转储。