Visual Studio: автоматическое присоединение к процессу при его создании
Я хочу прикрепить к процессу(a.exe) как только он порождается, это выполнимо с VS? Я знаю только название процесса. На самом деле то, что я хочу выполнить, - это установить точку останова в коде c#, но код принадлежит другому исполняемому файлу, который будет запущен текущим запущенным приложением(c.exe). Код находится внутри периода инициализации, поэтому для меня невозможно выполнить прикрепление вручную.
10 ответов:
когда я столкнулся с этой ситуацией раньше (и я контролировал оба процесса), я нашел достойный обходной путь, чтобы позвонить отладчик.Launch () в точке входа процесса нереста. VS затем появится диалоговое окно и позволит вам подключиться к процессу.
смотрите статью MSDN,Как запустить отладчик автоматически - это позволит пропустить множество диалоговых окон подтверждения нажатия кнопки busywork [без отключения UAC или другого Мессинга]. В статье перечислены следующие шаги:
- запустите редактор реестра (regedit).
- в Редакторе реестра откройте папку HKEY_LOCAL_MACHINE.
- перейдите в раздел HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Параметры выполнения файла NT\currentversion\image.
- на Параметры Выполнения Файла Изображения папка, найдите имя приложения, которое вы хотите отладить, например приложение.exe. Если вы не можете найдите приложение, которое вы хотите отладить:
а. Щелкните правой кнопкой мыши Параметры Выполнения Файла Изображения папка и в контекстном меню выберите Новый Раздел.
b. щелкните правой кнопкой мыши новую клавишу и в контекстном меню выберите переименовать. c. измените имя ключа на имя вашего приложения;приложение.exe в этом примере.- щелкните правой кнопкой мыши приложение.exe папка и в контекстном меню выберите Новое Строковое Значение.
- щелкните правой кнопкой мыши новое строковое значение и в контекстном меню выберите команду переименовать.
- измените имя на отладчик.
- щелкните правой кнопкой мыши новое строковое значение и в контекстном меню выберите изменить. Элемент Изменить Строку появится диалоговое окно.
- на значение типа vsjitdebugger.exe.
- клик ОК.
- С реестр, нажмите кнопку выход.
- каталог, содержащий vsjitdebugger.exe должен быть в вашем системном пути. Чтобы добавить его в системный путь, выполните следующие действия:
а. Открыть Панель Управления в классическом представлении и дважды щелкните система.
б. Нажмите кнопку Дополнительные Параметры Системы.
В. В Свойства Системы, нажмите кнопку Advanced tab.
д. На Advanced tab, нажмите Переменные Среды.
е. В Переменные Среды диалоговое окно, под системные переменные выберите путь, затем нажмите кнопку Edit.
Ф. В Редактировать Системную Переменную диалоговое окно, добавьте каталог в значение переменной. Используйте точку с запятой, чтобы отделить его от другие записи в списке.
г. Нажмите кнопку ОК закрыть Редактировать Системную Переменную окне.
ч. Нажмите кнопку ОК закрыть Переменные Среды окне. я. Нажмите кнопку ОК закрыть элемент Свойства Системы окне.- теперь используйте любой метод для запуска приложения. Visual Studio запустит и загрузит приложение
Я искал какой-то способ сделать это, когда я запускаю консольное приложение в рамках приемочного теста.
Я нашел это сегодня - https://blogs.msdn.microsoft.com/visualstudioalm/2014/11/24/introducing-the-child-process-debugging-power-tool/
Это дополнение к visual studio, и он работает удовольствие. Когда я отлаживаю приемочный тест (я использую ReSharper test runner) и помещаю точку останова в приложение, которое запускается, теперь я могу отлаживать приложение в том же экземпляре visual studio.
еще одно хорошее решение-использовать расширение Visual Studio "ReAttach". Можно найти здесь.
Если ваш процесс в настоящее время не запущен, ReAttach попросит вас запустить его и прикрепить к нему, как только он станет доступен.
"Entrian Attach" это надстройка Visual Studio, которая делает именно это - вы говорите ему имя вашего исполняемого файла, и он присоединяет отладчик при запуске процесса, независимо от того, как он запущен, до запуска любого кода.
(раскрытие: я-автор. Я построил приложение, потому что у меня есть эта проблема все время!)
Как насчет этого: откройте проект
a.exeв VS установите точки останова и т. д. Тогда откройте Свойства Проекта для a.exe, отладка tab и set команда доc.exe. Тогда просто нажмите Debug.к сожалению, я никогда не делал этого с управляемыми проектами, поэтому я могу быть не в курсе здесь. Однако именно так я бы сделал это с неуправляемыми (C++) проектами. Я думаю, что управляемый отладчик должен поддерживать его тоже.
вы также можете использовать gflags.exe util, который поставляется с инструментами отладки Windows, все, что вам нужно сделать, это открыть gflags.exe затем перейдите в файл изображения введите имя процесса (a.exe) нажмите tab и установите флажок отладчик, в текстовом поле введите путь vs с опцией / debugexe (т. е. "C:\Program файлы (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe " / debugexe)
автоматически visual studio откроется после запуска процесса вы можете добавить свои точки останова и нажать Бежать.
Если код C# запускается неуправляемым кодом, убедитесь, что вы проверили "отладка неуправляемого кода" @свойства проекта --> параметры отладки..
Мне очень понравилось Entrian Attach как предложил @RichieHindle, но я также нашел этот бесплатный инструмент, который делает что-то подобное. Он ловит все процессы, запущенные в процессе отладки.
Ловец Порожденных Процессов: https://marketplace.visualstudio.com/items?itemName=Brubtsov.SpawnedProcessCatcher
по состоянию на VS 2013 SP2, есть бесплатный инструмент от Microsoft, который делает то же самое, что и "Spawned Process Catcher", упомянутый ранее - прикрепление всех процессов, которые запускаются процессом уже в отладке. Примечание: Я только проверил это с неуправляемым C++ (это работает безупречно).
Comments