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 сообщат вам об этом при запуске нового процесса:

Это нормально... просто нажмите "Да, отладка [имя сборки]". В следующем окне будет предложено выбрать отладчик для подключения, который по умолчанию обычно используется отладчиком, который изначально использовался для запуска запускаемого приложения.

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