Tôi có một minidump bị lỗi từ một ứng dụng .NET. Có cách nào để biết phiên bản CLR (ví dụ: phiên bản mscorwks.dll) của máy lỗi (tạo ra bãi chứa sự cố) bằng cách sử dụng Windbg hoặc một số công cụ khác không?Làm thế nào để biết phiên bản CLR của một bãi chứa sự cố?
Trả lời
Trong WinDbg: cách đơn giản nhất là sử dụng lệnh !eeversion
, nhưng nếu bạn muốn thêm thông tin bạn có thể sử dụng lệnh lm
với các tùy chọn tiết v
cho các mô-đun runtime mscorwks
. Nếu bạn đang ở trên. NET 4 thời gian chạy được gọi là clr
, vì vậy trong trường hợp đó bạn cần phải thay đổi lệnh cho phù hợp.
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 trong 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
Ngoài ra, nạp bãi trong Visual Studio và sử dụng Debug | Windows | Mô-đun toolwindow để hiển thị một số thông tin này.
ví dụ cho hai phiên bản Net khác nhau, sử dụng thông tin phiên bản của 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 vì điều này hoạt động mà không tải cụ thể (và do đó trên máy đó có khả năng không có sẵn) mscordacwks.dll/sos.dll vv Tôi cũng đã thêm ví dụ cho hai phiên bản .Net để tham khảo. –
! EEVersion nên cung cấp phiên bản CLR.
Xin chào Brian, tôi nghĩ lệnh này chỉ kiểm tra trên máy gỡ lỗi mà phiên bản CLR được sử dụng, không kiểm tra phiên bản CRL của máy lỗi. Có ý kiến gì không? Một vấn đề khác là, phiên bản không đầy đủ, không nên chỉ là 50727, nhưng 50727.xxxx, như 50727.3053. – George2
@ George2: lm hiển thị mô đun được tải nếu bạn đang kiểm tra tệp kết xuất vì đây là một phần của bộ nhớ đã bị bán. Đối với số phiên bản, tôi cho rằng điều này có thể được đọc từ phiên bản Tệp và/hoặc Sản phẩm. –