在多个.net框架版本上使用windbg

时间:2012-08-30 08:00:33

标签: .net windbg

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

sos.dll
Mscorwks.dll
Mscordacwks.dll

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

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

2 个答案:

答案 0 :(得分: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种组合符号。

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

考虑到您描述的应用程序的范围/大小,我会说它可以很好地设置内部符号服务器。这可以保留应用程序的不同版本的所有符号,这些符号仍然被客户使用(这项任务不能掉以轻心)。

建议阅读:

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

答案 1 :(得分:1)

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