Проверка/разборка нативных образов .Net

Можно ли дизассемблировать/проверить нативный код, созданный .Net JITer/ngen? (в чисто академических целях)

Пытаясь ответить на этот вопрос, я стал заинтригован тем, какую оптимизацию будет выполнять JITer - вместо того, чтобы дико спекулировать, я действительно хотел бы иметь возможность увидеть своими глазами, что на самом деле происходит.

До сих пор я:

  1. Установил собственный образ моей сборки-кандидата, используя ngen (отличается ли вывод этого от вывода JIT-компилятора?)
  2. Скопировал собственный образ из GAC

Но теперь я немного застрял - насколько мне известно, сборки .Net находятся в переносимом исполняемом файле, но обычные инструменты, которые я мог бы использовать для дизассемблирования такого файла (objdump), просто блюют:

C:\Users\justin\Desktop>objdump -d ConsoleApplication1.ni.exe
objdump: ConsoleApplication1.ni.exe: File format not recognized

Можно ли таким образом заглянуть внутрь нативного образа? В противном случае, есть ли какой-то альтернативный способ, которым я мог бы удовлетворить свое любопытство? (например, дизассемблирование кода в запущенном процессе)


person Justin    schedule 25.08.2011    source источник
comment
Я получил несколько полезных методов, когда спросил Есть ли способ увидеть нативный код, созданный JITter для данного C#/CIL?   -  person AakashM    schedule 25.08.2011
comment
Не могли бы вы посмотреть с помощью windbg или dumpbin?   -  person Tim Barrass    schedule 25.08.2011
comment
@AakashM Очень полезно и, вероятно, более надежно, чем проверка собственных изображений!   -  person Justin    schedule 25.08.2011
comment
Нет проблем :) На самом деле, я мог бы даже добавить это в качестве ответа :)   -  person Tim Barrass    schedule 25.08.2011


Ответы (1)


У меня был некоторый успех с windbg и dumpbin в прошлом, когда пытались сделать что-то подобное.

person Tim Barrass    schedule 25.08.2011