2012-08-30 16 views
3

我负责安装在全球近50万台PC上的基于.Net的紧缩包装桌面应用程序的Windows错误报告调试小型转储,所有这些应用程序都运行不同的操作系统版本, .Net框架的版本。要做到这一点,需要以下的匹配版本3个文件在多个.net框架版本上使用windbg

sos.dll 
Mscorwks.dll 
Mscordacwks.dll 

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

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

回答

1

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

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)有符号。

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

鉴于您描述的应用程序的范围/大小,我会说这将很好,以便建立一个内部的符号服务器。这可以保留客户仍在使用的应用程序的不同版本的所有符号(不要轻视任务)。

推荐阅读:

你也可以考虑设立一个source server,让你获取的版本正确来源,在调试会话中,来自源代码控制。

+0

符号服务器如何提供帮助?用户需要一个DLL,而不是符号。 –

+0

@SevaTitov是的,他也需要二进制文件,我忽略了那部分,抱歉。但要做任何有意义的调试,他也需要符号。 –

+0

嗨基督教,谢谢你的回应,但我已经有了整理好的符号。我可以将符号路径设置为我的私有符号,而.symfix +可以处理框架符号。真正的问题是,在你甚至可以以有意义的方式将调试器连接到.net小型转储器之前,你需要上面提到的3个DLL的匹配版本。大多数基于Web的ASP.Net客户端 - 服务器应用程序工作的人不会遇到这个问题,因为他们只能登录到他们的生产服务器并从那里获取这些dll的版本。我没有这种奢侈。 –