Debugging 我如何知道崩溃转储的CLR版本?
我有一个小型转储程序从.NET应用程序中崩溃。是否有任何方法可以使用Windbg或其他工具了解故障机器(生成崩溃转储)的CLR版本(例如mscorwks.dll的版本)?在Windbg中:最简单的方法是使用Debugging 我如何知道崩溃转储的CLR版本?,debugging,clr,windbg,crash-dumps,Debugging,Clr,Windbg,Crash Dumps,我有一个小型转储程序从.NET应用程序中崩溃。是否有任何方法可以使用Windbg或其他工具了解故障机器(生成崩溃转储)的CLR版本(例如mscorwks.dll的版本)?在Windbg中:最简单的方法是使用!eeversion命令,但如果您需要其他信息,可以将lm命令与运行时模块mscorwks的vverbose选项一起使用。如果您在.NET 4上,则运行时称为clr,因此在这种情况下,您需要相应地更改命令 0:026> lm vm mscorwks start end
!eeversion
命令,但如果您需要其他信息,可以将lm
命令与运行时模块mscorwks
的v
verbose选项一起使用。如果您在.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
在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
或者,在VisualStudio中加载转储文件,并使用“调试|窗口|模块”工具窗口显示其中一些信息
使用clr.dll的版本信息的两个不同.Net版本的示例: .Net 4.0(.x?) .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
!!EEVersion应该给出CLR版本。嗨,Brian,我认为这个命令只检查调试机器上使用的CLR版本,而不检查故障机器的CRL版本。有什么评论吗?另一个问题是,版本不完整,它不仅应该是50727,而且应该是50727.xxxx,如50727.3053。@George2:lm显示在检查转储文件时加载的模块,因为这是转储内存的一部分。至于版本号,我假设它可以从文件和/或产品版本中读取。+1因为它可以在不加载特定(因此在该机器上可能不可用)mscordacwks.dll/sos.dll等的情况下工作。我还添加了另外两个.Net版本的示例以供参考。您只需要一个模块的信息:lm vm clr
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