【问题标题】:How can I know the CLR version of a crash dump?我如何知道故障转储的 CLR 版本?
【发布时间】:2017-03-22 02:33:17
【问题描述】:

我有一个小型转储从 .NET 应用程序中崩溃。有没有办法使用 Windbg 或其他工具知道故障机器(生成故障转储)的 CLR 版本(例如 mscorwks.dll 的版本)?

【问题讨论】:

    标签: debugging clr windbg crash-dumps


    【解决方案1】:

    在 WinDbg 中:最简单的方法是使用 !eeversion 命令,但如果您需要更多信息,可以使用 lm 命令和运行时模块 mscorwks 的详细选项 v。如果您使用的是 .NET 4,则运行时称为 clr,因此在这种情况下,您需要相应地更改命令。

    0:026> lm vm mscorwks
    start    end        module name
    79e70000 7a3ff000   mscorwks T (no symbols)           
        Loaded symbol image file: mscorwks.dll
        Image path: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
        Image name: mscorwks.dll
        Timestamp:        Wed Oct 24 09:41:29 2007 (471EF729)
        CheckSum:         00597AA8
        ImageSize:        0058F000
        File version:     2.0.50727.1433
        Product version:  2.0.50727.1433
        File flags:       0 (Mask 3F)
        File OS:          4 Unknown Win32
        File type:        2.0 Dll
        File date:        00000000.00000000
        Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    

    【讨论】:

    • 嗨,Brian,我认为这个命令只检查调试机器使用的 CLR 版本,而不检查故障机器的 CRL 版本。有cmets吗?另一个问题是,版本不完整,应该不是只有50727,而是50727.xxxx,比如50727.3053。
    • @George2: lm 显示在您检查转储文件时加载的模块,因为这是被转储的内存的一部分。至于版本号,我假设这可以从文件和/或产品版本中读取。
    【解决方案2】:

    !EEVersion 应该给出 CLR 版本。

    【讨论】:

      【解决方案3】:

      在 WinDbg 中详细说明:

      >lm v 
      ............. (lots of modules).......
      
      687d0000 68d06000   System_Xml_ni   (deferred)             
      Image path: C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Xml\38b9d09539b67b08ee996db6c71f8a9b\System.Xml.ni.dll
      Image name: System.Xml.ni.dll
      Has CLR image header, track-debug-data flag not set
      Timestamp:        Mon Oct 06 20:43:49 2008 (48EADAF5)
      CheckSum:         00000000
      ImageSize:        00536000
      File version:     2.0.50727.3074
      Product version:  2.0.50727.3074
      File flags:       0 (Mask 3F)
      File OS:          4 Unknown Win32
      File type:        2.0 Dll
      File date:        00000000.00000000
      Translations:     0409.04b0
      CompanyName:      Microsoft Corporation
      ProductName:      Microsoft® .NET Framework
      InternalName:     System.Xml.dll
      OriginalFilename: System.Xml.dll
      ProductVersion:   2.0.50727.3074
      FileVersion:      2.0.50727.3074 (QFE.050727-3000)
      FileDescription:  .NET Framework
      LegalCopyright:   © Microsoft Corporation.  All rights reserved.
      Comments:         Flavor=Retail
      

      或者,在 Visual Studio 中加载转储并使用 Debug |窗户 |显示其中一些信息的模块工具窗口。


      两个不同.Net版本的例子,使用clr.dll的版本信息:

      .Net 4.0(.x?)

      Image name: clr.dll
      Timestamp:        Thu Mar 18 21:39:07 2010 (4BA21EEB)
      ...
      File version:     4.0.30319.1
      Product version:  4.0.30319.1
      

      .Net 4.5.2

      Image name: clr.dll
      Timestamp:        Fri Nov 07 20:09:21 2014 (545CA861)
      ...
      File version:     4.5.27.0
      Product version:  4.0.30319.0
      

      【讨论】:

      • +1 因为这无需加载特定的(因此在该机器上可能不可用)mscordacwks.dll / sos.dll 等。我还添加了另外两个 .Net 版本的示例以供参考。跨度>
      • 您只需要一个模块的信息:lm vm clr
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2016-03-21
      • 2017-05-20
      • 2014-03-01
      • 1970-01-01
      相关资源
      最近更新 更多