J'ai un écrasement minidump d'une application .NET. Est-il possible de connaître la version CLR (par exemple, la version de mscorwks.dll) de la machine d'erreur (qui génère l'image de vidage sur incident) à l'aide de Windbg ou d'un autre outil?Comment puis-je connaître la version CLR d'un vidage sur incident?
Répondre
En WinDbg: le plus simple est d'utiliser la commande !eeversion
, mais si vous voulez des informations supplémentaires, vous pouvez utiliser la commande lm
avec l'option verbose v
pour le module d'exécution mscorwks
. Si vous utilisez .NET 4, l'exécution est appelée clr
, vous devez donc modifier la commande en conséquence.
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
Go verbose dans 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
Vous pouvez également charger la décharge dans Visual Studio et utilisez le débogage | Windows | Modules toolwindow pour afficher certaines de ces informations.
Exemples pour deux différentes versions .Net, en utilisant les informations de version de 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 car cela fonctionne sans charger le mscordacwks.dll/sos.dll spécifique spécifique (et donc sur cette machine potentiellement indisponible) etc. J'ai également ajouté des exemples pour deux versions .Net supplémentaires pour référence. –
EEVersion! devrait donner la version CLR.
Salut Brian, je pense que cette commande vérifie seulement sur la machine de débogage quelle version de CLR est utilisée, ne vérifiant pas sur la version CRL de la machine fautive. Des commentaires? Un autre problème est, la version est incomplète, il ne devrait pas être seulement 50727, mais 50727.xxxx, comme 50727.3053. – George2
@ George2: lm affiche le module qui est chargé si vous inspectez un fichier de vidage car il fait partie de la mémoire qui a été sauvegardée. En ce qui concerne le numéro de version, je suppose que cela peut être lu à partir du fichier et/ou de la version du produit. –