问题
Application that was developed on machine with Windows XP and works there just fine has severe problems on target machine with Windows Server 2008. Namely, it fails to start properly with following information avaiable:
Description:
Stopped working
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: neolant.asrm.rcpfreshner.service
Problem Signature 02: 1.0.7.0
Problem Signature 03: 4f4b66d2
Problem Signature 04: mscorlib
Problem Signature 05: 2.0.0.0
Problem Signature 06: 4bf4c743
Problem Signature 07: e47
Problem Signature 08: 20e
Problem Signature 09: Exception
OS Version: 6.0.6002.2.2.0.272.7
Locale ID: 1049
I would like to extract all possible information from this, which means i need to know what method in mscorlib has methoddef of e47.
How can i retrieve this information?
回答1:
You can use ildasm
(Microsoft Intermediate Language Disassembler). Open the assembly in ildasm, and select View -> MetaInfo -> Show!
from the main menu. You will see the assembly metadata with *Def/*Ref identifiers.
回答2:
Navreen has a good description of how to decode the "Watson Bucket" dump here.
http://naveensrinivasan.github.io/2010/11/17/decoding-clr20r3-.net-exception---using-mono-cecil/
He also has a script that uses Mono Cecil to automatically decode the Watson Bucket into a IL dump of where the problem occurred.
来源:https://stackoverflow.com/questions/9465927/how-to-figure-out-method-name-by-assembly-and-methoddef