How to figure out method name by assembly and methoddef?

爷,独闯天下 提交于 2020-01-01 18:08:51

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!