3

我负责在安装在全球近 50 万台 PC 上的基于 .Net 的收缩包装桌面应用程序上从 Windows 错误报告中调试 minidump,所有这些应用程序都运行不同的操作系统版本和不同的 .Net 框架补丁版本。为此需要以下 3 个文件的匹配版本

sos.dll
Mscorwks.dll
Mscordacwks.dll

我在过去下载 .msu 文件并从中提取这些文件方面取得了一定的成功,但我相信一定有更简单的方法。

我的问题是,是否有一个存储库可以下载这些文件的正确版本,以便调试小型转储?

4

2 回答 2

2

您需要更多的文件,只有这三个文件才能可靠地调试/重现/分析现场问题。基本上,您需要所有这些(Windows、CLR 和(托管).NET 框架)。

我不知道只有一些文件的任何存储库。您必须安装相应的版本。

虽然您可以在同一个机器上安装多个版本的 .NET CLR(1.1、2.0、4.0),并通过 .loadby 命令将正确的 SOS.dll 加载到 WinDBG 中,但您可能必须为您支持的那些版本安装多个 Windows .

此外,您还需要这些组件的(公共)符号,包括您​​自己的应用程序的(私有)符号,以进行任何有意义的调试。

考虑到您有 3 个版本的应用程序已交付并仍受支持,运行在您仍支持的 4 个操作系统版本(例如 Windows Vista SP1、Windows 7、Windows 7 SP1 和 Windows 8)上,这为您提供了 12 种符号组合。

这就是符号服务器的用途。您可以使用公共 microsoft 符号服务器,但(当然)不包含您自己的应用程序的符号。

鉴于您描述的应用程序的范围/大小,我认为最好设置一个内部符号服务器。这可以保留客户仍在使用的不同版本的应用程序的所有符号(一项不能掉以轻心的任务)。

推荐阅读:

您还可以考虑设置源服务器,以允许您在调试会话中从源代码管理中获取正确版本的源代码。

于 2012-08-30T10:53:07.097 回答
1

由于没有人能够给我这个问题的真正答案,我将提供我的“解决方法”。到目前为止,我一直在做的是搜索 Microsoft 支持站点以找到框架版本的 ms 更新包,下载它,然后使用 expand.exe 提取它。然后可以将 WinDbg 连接到此版本,而不是运行您正在调试的机器的版本。这是一篇博文,详细解释了该过程http://sjbdeveloper.blogspot.com.au/2012/10/getting-correct-versions-of-net.html

于 2012-10-10T09:07:22.427 回答