Почему я не могу профилировать с помощью vsperfmon, прикрепив к dllhost.exe?

У меня есть собственный проект C++, который использует COM для связи с отдельным проектом в VB.NET. Я был в состоянии успешно профилировать нативный проект в прошлом, прикрепив проект к отдельному exe-файлу, который ссылается на нативный dll. Я сейчас пытаюсь профилировать собственный проект, подключившись к dllhost.exe. Эта конфигурация работает, так как я могу отлаживать через dllhost, но если я пытаюсь профилировать код (или просто присоединяю профилировщик к dllhost во время отладки), профилировщик останавливается, и я получаю следующий вывод:

PRF0010: Launch Aborted - Unable to start vsperfmon.exe
Error VSP1712: Invalid File: C:\...\MyProj110609.vsp
PRF0025: No data was collected.

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

1 ответ

После некоторых исследований я обнаружил, что единственный способ сделать это с помощью dllhost - использовать профилировщик командной строки. Перейдите в командную строку VS 2010 и введите

VSPerfCmd /start:sample /output:c:\TestFile.vsp
VSPerfCmd /attach:[PID]

где c:\TestFile.vsp это имя и путь выходного файла, и [PID] это идентификатор профиля dllhost. Запустите все, что вы хотите профилировать, и когда вы закончите, введите

VSPerfCmd /detach:[PID]
VSPerfCmd /shutdown

и у вас будет отчет об эффективности.

Другие вопросы по тегам