2010-08-21 2 views
3

Я написал небольшой профайлер для приложений .NET. Он использует интерфейс ICorProfilerCallback2.Почему профилировщик не может подключиться?

Профилировщик подключается и хорошо работает для приложения .NET 2.0, но не работает для .NET> 2.0 (3.0, 3.5, 4.0). Когда я запускаю exe, скомпилированный с .NET 4.0, ничего не происходит, однако для .NET 2.0 начинается профайлер. Я устанавливаю следующие переменные перед запуском управляемом Exe

@Echo off 
set Cor_Enable_Profiling=0x1 
set COR_PROFILER={67D8965A-8686-2639-9C24-E1F7D13EE105} 
set COR_PROFILER_DLL=e:\Debug\Profiler.dll 
set COR_PROFILER_PATH=e:\Debug\Profiler.dll 

Любая идея, почему это могло произойти? Он даже не попасть в DllMain

ответ

4

Timotei,

Проблема вы обсуждаете, вероятно, покрыта пост Дэвида Броман в: http://blogs.msdn.com/b/davbr/archive/2009/05/26/run-your-v2-profiler-binary-on-clr-v4.aspx

Для CLR V4 выполнения вы должны увидеть некоторую полезную информацию в событии Журнал (просмотр с помощью средства просмотра событий), описывающий, почему профайлер не загрузился.

Если вы не хотите использовать параметр COMPLUS_ProfAPI_ProfilerCompatibilitySetting, обсужденный в блоге, вы также можете поддерживать интерфейс ICorProfilerCallback3, чтобы добавить поддержку среды выполнения V4.

С CLR V4 вам также может потребоваться рассмотреть сценарии «бок о бок», где обе версии V2 и V4 загружаются в один исполняемый файл. Для получения дополнительной информации обратитесь к другому сообщению Дэвида под названием «Профилировщики, входящие в состав сбоку экземпляры CLR и бесплатный тестовый жгут« (к сожалению, я не могу опубликовать ссылку на него также из-за предотвращения спама).

 Смежные вопросы

  • Нет связанных вопросов^_^