Подтвердить что ты не робот

Как работают профилировщики .NET?

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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