WPF Передача отладчика новому процессу
У меня есть приложение, которое порождает новый процесс. Во время разработки приложения я хотел бы подключить отладчик к новому процессу. В настоящее время я могу сделать это с помощью функции Visual Studios Attach to Process, но мне сложно возвращаться и присоединять его вручную каждый раз, когда мне нужно проверить незначительные изменения в коде.
Можно ли порождать новый процесс, используя Process.Start, а затем присоединять к новому процессу любые отладчики, которые в данный момент подключены к текущему процессу?
IE:
Запустите Process1 с включенной отладкой
Процесс1 запускает Процесс2
Process1 присоединяет отладчик к Process2
2 ответа
Не очень чистое решение, но вы можете сделать что-то вроде этого:
- В Process1, если вы работаете в режиме отладки (
Debugger.IsAttached
), передать аргумент Process2 (например,process2.exe /debug
) - В Process2, если процесс запущен с
/debug
аргумент, прикрепить отладчик из кода (Debugger.Launch()
)
В качестве справки для всех, кто смотрит на это, вот реализация кода (принятого) ответа Томаса Левеска:
Код
Запуск приложения:
Process.Start(/** Path to assembly **/, System.Diagnostics.Debugger.IsAttached ? "/Debug" : "");
Целевое приложение:
if (Environment.GetCommandLineArgs().Contains("/Debug"))
System.Diagnostics.Debugger.Launch();
Это приведет к тому, что большинство экземпляров Visual Studio сообщат вам об этом при запуске нового процесса:
Это нормально... просто нажмите "Да, отладка [имя сборки]". В следующем окне будет предложено выбрать отладчик для подключения, который по умолчанию обычно используется отладчиком, который изначально использовался для запуска запускаемого приложения.