Как определить имя метода по сборке и methoddef? - PullRequest
2 голосов
/ 27 февраля 2012

Приложение, которое было разработано на компьютере с Windows XP и прекрасно работает там, имеет серьезные проблемы на целевой машине с Windows Server 2008. А именно, оно не запускается должным образом со следующей доступной информацией:

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Я хотел бы извлечь из этого всю возможную информацию, а это значит, что мне нужно знать, какой метод в mscorlib имеет methoddef из e47.

Как я могу получить эту информацию?

Ответы [ 2 ]

4 голосов
/ 27 февраля 2012

Вы можете использовать ildasm (Microsoft Intermediate Language Disassembler). Откройте сборку в ildasm и выберите View -> MetaInfo -> Show! в главном меню. Вы увидите метаданные сборки с идентификаторами * Def / * Ref.

1 голос
/ 03 апреля 2012

Navreen имеет хорошее описание того, как декодировать дамп "Watson Bucket" здесь.

http://naveensrinivasan.github.io/2010/11/17/decoding-clr20r3-.net-exception---using-mono-cecil/

У него также есть скрипт, который использует Mono Cecil для автоматического декодирования Watson Bucket в дамп IL, где возникла проблема.

...