在WinDBG中读取.NET 4.0转储文件

时间:2013-08-31 16:27:26

标签: iis-7 .net-4.0 asp.net-4.0 windbg

我熟悉WinDBG范例。正在使用WinDBG x64版本审查大量转储文件。在大多数情况下,转储文件是.NET 2.0应用程序和psscor2.dll。我目前使用的WinDBG版本是6.12.0002.633。最近,我一直在尝试使用psscor4.dll打开从.NET 4.0应用程序池生成的x64转储IIS转储文件。我运行的任何命令都返回“无法请求信息”

  1. 我在服务器上的c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319中有mscordacwks.dll
  2. 重命名为mscordackwks_AMD64_AMD64_4.0.30319.xxxx.dll。 xxxx与文件
  3. 中的编译版本匹配
  4. 打开WinDBG,打开转储文件并将上述DLL的路径添加到exepath
  5. 运行一个基本命令!eeversion检查一切正常,我得到 GC Heap未初始化,因此GC模式尚未确定在垃圾收集的计划阶段
  6. 接下来我键入!threads并获取,无法请求ThreadStore
  7. 下一个!线程池,我得到,无法请求ThreadpoolMgr信息
  8. 我使用这些错误消息完成了一些基本的谷歌搜索,他们都指出没有正确的mscordacwks.dll或在WinDBG x86中的WinDBG x64或x64文件中打开x86文件。听起来与我无关

    非常感谢任何帮助/指导

2 个答案:

答案 0 :(得分:2)

内部版本号4.0.30319.17929是.NET 4.5内部版本号。 PSSCOR4不会调试4.5。您需要使用4.0 SOS和/或SOSEX,它适用于所有版本的.NET 2.0-4.5。

答案 1 :(得分:1)

我在过去发现有三个dll你需要有正确版本的调试.Net。

sos.dll 的Mscorwks.dll mscordacwks.dll

这是我通常如何获取这些dll的http://sjbdeveloper.blogspot.com.au/,虽然听起来好像你正在使用基于服务器的应用程序,这意味着你可能只是从你的生产盒中抓取它们,假设你有权访问它,如果你不这样做,或者是一个分期盒。