Как переключить процесс в окне Visual Studio Diagnostic Tools?
В Visual Studio 2017 я хотел бы использовать окно " Диагностические инструменты" для анализа моих модульных тестов (x64), написанных на С#. Однако он всегда отображает сообщение
Отлажено несколько процессов. В этом окне отображаются только данные для testhost.exe(PID: xxxxx).
testhost.exe не очень помогает мне, мне нужен QTAgent.exe. В окне Процессы я вижу, что отладчик подключен к обоим процессам, QTAgent.exe и testhost.exe. Но я не могу найти способ переключения на QTAgent.exe в окне "Диагностические инструменты". Как вы можете это сделать?
Отключение от testhost.exe не помогает.
Ответы
Ответ 1
В данный момент в отладчике активен только один процесс. Вы можете установить активный или текущий процесс на панели инструментов "Отладка" или в окне "Процессы". Для переключения между процессами оба процесса должны находиться в режиме разрыва.
На панели инструментов "Отладка" выберите "Процесс", чтобы просмотреть окно "Список процессов". Выберите процесс, который вы хотите назначить в качестве текущего процесса.
Если панель инструментов "Отладка" не отображается, выберите "Инструменты", "Настроить". На вкладке Панели инструментов выберите "Отладка".
Откройте окно "Процессы" (сочетание клавиш Ctrl + Alt + Z), найдите процесс, который вы хотите установить в качестве текущего процесса, и дважды щелкните его.
Текущий процесс отмечен желтой стрелкой.
Переход к проекту устанавливает его в текущий процесс для целей отладки. Любое окно отладки, которое вы просматриваете, покажет состояние текущего процесса, и все команды шага влияют только на текущий процесс.
Ответ 2
Этот поток немного старый, но я нашел обходное решение.
Мне нужно было увидеть Diagnostics для процесса iisexpress.exe при отладке Azure WebRole, но вместо этого инструмент Diagnostics показывал данные для процесса WaIISHost.exe.
Это то, что я сделал:
1- Открыл окно Процессы (Ctrl + Alt + Z) во время отладки моего WebRole в Visual Studio.
2- В окне Процессы я щелкнул правой кнопкой мыши по iisexpress.exe и выбрал "Отделить процесс".
3- Открыл вторую Visual Studio и открыл то же самое решение, на котором я работал на первом.
4- Пошел в меню "Отладка/Привязка к процессу".
5- Выбранный iisexpress.exe из запущенных процессов, а затем я наконец увидел данные для iisexpress.exe
Примечание. Если вы не отсоединяетесь от целевого процесса на первой Visual Studio, ваша вторая визуальная студия не позволит вам подключиться к ней, потому что она будет жаловаться, что уже есть сеанс отладки в том же процессе.
Примечание 2: Отключенный процесс можно оставить сиротой, а это означает, что при остановке отладчика Visual Studio он может не убить отсоединенный процесс, и вам, возможно, придется вручную его убить с помощью проводника процессов или что-то в этом роде.
Ответ 3
Не 100% решение, но его можно использовать, если вас интересует только профилирование использования процессора:
- Отключить средства диагностики во время отладки ("Параметры" → "Отладка" или просто выполнить поиск "диагностика")
- Установите точку останова в первой строке кода вашего модульного теста.
- Откройте "Профилировщик производительности" (ALT + F2) и присоедините его к "QTAgent32.exe"
- Продолжить отладку (F5)
- Проверьте, куда уходит процессорное время: