繁体   English   中英

使用Win7 / 64分析在XP / 32计算机上生成的Windows故障转储?

[英]Analyzing Windows crash dumps generated on XP/32 machines with Win7/64?

我们在分析在我们的开发机器上的客户Windows XP / 32盒上创建的Windows崩溃转储时遇到问题。

我们的许多开发机器现在都是Win7 / 64机器,但似乎在Windows XP下生成的崩溃转储无法完全解析其二进制依赖关系,因此在Visual Studio(2005)中显示调用堆栈时会出现警告。

例如,在Windows XP上生成转储时从Win7计算机加载时无法解析msvcr80.dll:

在XP上,WinSxS路径似乎是C:\\WINDOWS\\WinSxS\\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\\msvcr80.dll - 在Win7上, 同一 DLL版本的WinSxS路径似乎是: x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_d08d7da0442a985d

(我从codeguru上的论坛帖子获得了这个信息,链接到msdn文章 。)

Visual Studio(2005)现在无法再正确解析崩溃转储的二进制文件。

如何让Visual Studio解析转储文件的所有正确二进制文件?

注意 :我已经正确设置了符号服务器。 大多数系统DLL(kernel32.dll等)的公共符号和我们自己的DLL的符号都已正确加载。 只是没有加载驻留在WinSxS文件夹中的DLL的符号,因为看起来Vista / 7对这些DLL使用的路径方案与XP不同,因此Visual Studio找不到dll而不是 pdb)本地dev机器因此无法加载转储文件的相应符号。

我认为在这种情况下应该使用WinDbg来分析转储。 然后你可以摆脱这样的拦路战。 但只记得使用x86 build of WinDbg(Windows调试工具的一部分)。

使用microsoft symbol server: http//support.microsoft.com/kb/311503
为此,打开选项对话框,转到ebugging \\ Symbols并将http://msdl.microsoft.com/download/symbols添加为新位置; 然后选择一个本地路径进行缓存,你就可以开始了

根据我的理解,这是你难以解决的二进制文件,而不是正确的符号?

除了复制相应的二进制文件之外,一个选项是设置x86机器,分享它的C并将调试器指向该机器。

您可以在VM中为所有开发人员访问它。 解析二进制文件时只需从VM加载它们。

尝试使用symchk.exe,它可以帮助您从转储文件中提取符号和二进制文件。 (或从目录中)

http://msdn.microsoft.com/en-us/library/ff558845%28v=VS.85%29.aspx

symchk可以在windbg包中找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM