Возможно ли использовать Profiling API прямо из C #? - PullRequest
20 голосов
/ 21 апреля 2011

Я просто хочу использовать .NET Profiling API (ICorProfilerCallback и т. Д.), Но в то же время не хочу иметь дело с C ++. Я долго искал и не нашел ни одного примера на C #, но на C # + C ++, где самая интересная часть написана с использованием C ++.

1 Ответ

27 голосов
/ 21 апреля 2011

Нет, вы не можете реализовать API профилирования CLR в управляемом коде (C # или иным образом), поскольку обратные вызовы профилирования вызываются в очень конкретные моменты времени, когда предполагается, что управляемая среда находится в определенном состоянии. Реализация ваших обратных вызовов в управляемом коде нарушила бы множество предположений.

Дэвид Броман, разработчик API профилирования CLR, имеет это, чтобы сказать :

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

Блог Дэвида - отличный ресурс для работы с API профилирования CLR.

...