Как я могу отслеживать / профилировать процесс в Windows?
Иногда, исследуя проблемы SQL Server, я нахожу полезным иметь возможность подключить к нему отладчик Visual Studio и попытаться выяснить, что он делает, посмотрев на стек вызовов (общедоступные символы доступны и часто можно сделать выводы полезными информация из названий методов).
Отличный пример типа внутренней информации, которую можно вывести, находится в этом блоге, который вдохновил мои попытки.
Однако это может быть довольно трудоемким и утомительным процессом. Обычно я запускаю интересующий код в цикле, присоединяю отладчик, затем непрерывно прерываюсь и продолжаю, пока не попаду в стек вызовов, который выглядит интересным для исследуемого вопроса. Затем я могу просмотреть код и посмотреть имена вызываемых методов. Однако это занимает много лет.
Есть ли способ автоматизировать это, чтобы я мог просто регистрировать все методы, вызываемые в течение короткого периода времени, а затем просматривать файл журнала?
2 ответа
Для этого можно использовать профилировщик в более поздних версиях Visual Studio.
Пример вывода
(И ответ здесь показывает, почему это полезно)
Кроме того, Windows Performance Toolkit является бесплатным и может делать то же самое и многое другое. Хорошую серию видео на эту тему можно найти по адресу https://channel9.msdn.com/Search?term=Defrag%20tools%20wpt
Если я не ошибаюсь, вы, вероятно, ищете Process Monitor (он же procmon). Вы можете получить его с этого сайта Microsoft.
В частности, пункт меню "Сводка стека" содержит такую информацию. Подробнее в разделе PM2-6: Развертывание стека