Как работают профилировщики .NET? - PullRequest
21 голосов
/ 15 ноября 2011

Я думаю о добавлении встроенного режима диагностики в приложение, которое пишу для подсчета использования метода и времени выполнения, аналогично тому, что делают многие профилировщики кода, такие как dotTrace.

У меня возникли проблемы с поиском ресурсов через Google, как это сделать; Очевидно, что это возможно, но кто-нибудь может указать мне на некоторые ресурсы о том, как я могу реализовать что-то вроде подсчета вызовов методов в .NET?

Ответы [ 2 ]

7 голосов
/ 15 ноября 2011

Статья Code Project Создание настраиваемого .NET Profiler описывает процесс создания профилировщика с использованием хуков профилировщика CLR.

Это включает создание COM-объекта, который реализует интерфейс ICorProfilerCallback2, а затем использование переменных среды для указания CLR, что мы хотим профилировать с помощью этого класса:

Когда CLR начинает процесс, он ищет две переменные среды:

  • COR_ENABLE_PROFILING: эта переменная среды имеет значение 1 или 0. 1 указывает, что CLR должен использовать профилировщик. 0 (или отсутствие этой переменной среды) означает, что не следует использовать профилировщик.
  • COR_PROFILER: Теперь, когда мы сказали CLR, что хотим профилировать, мы должны сказать ему, какой профилировщик использовать. Поскольку профилировщики реализованы как объекты COM, для этой переменной среды будет задан GUID кокласса, который реализует интерфейс ICorProfilerCallback2.
1 голос
/ 15 ноября 2011

Возможно, я здесь слишком прост, но моим решением было бы ведение журнала.Использование entlib или log4net и протоколирование сообщений уровня отладки.Затем вы можете просто написать небольшой скрипт / программу для анализа файла журнала и подсчета количества методов.Могут даже быть другие средства диагностики журналов.

Если вам не нужна расширенная визуализация или сложное отображение отношений в реальном времени и т. Д. Вам нужен профилировщик?Не хватит ли файла журнала для подсчета и времени выполнения метода?Когда вы находитесь в производстве или не заботитесь об инструментах, вы повышаете уровень ведения журнала и забываете об этих отладочных сообщениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...