Как запустить другой проект в решении в режиме отладки - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть хост-приложение WCF, которое запускается исполняемым файлом с некоторыми динамическими параметрами.

Теперь я хочу отладить это приложение, но поскольку оно запускается другим инструментом, VS.NET не будет загружать его в режиме отладки.

Можно ли написать некоторый код только для DEBUG, чтобы заставить его выполнить этот процесс в режиме DEBUG, чтобы он достиг точек останова.

В настоящее время он использует Process.Start() для запуска хост-приложения.

Присоединение к отладчику каждый раз не вариант, я ищу более практичное решение.

Ответы [ 4 ]

1 голос
/ 07 декабря 2009

Вы можете сделать это без изменения исходного кода. Откройте автоматически запущенный проект в Visual Studio и установите точку останова. Запустите Regedit.exe и добавьте ключ в «HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Опции выполнения файла образа» с тем же именем, что и ваш .exe. Добавьте новое строковое значение с именем «Отладчик», установите для него «c: \ Windows \ system32 \ vsjitdebugger.exe». Пример файла .reg:

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ConsoleApplication1.exe]
"Debugger"="\"c:\\Windows\\system32\\vsjitdebugger.exe\""

Теперь, когда ваше приложение запускает процесс, появляется приглашение отладчика JIT. Выберите экземпляр Visual Studio, в который загружен автоматически запущенный проект. Выполнение остановится в точке останова. Обратите внимание, что вам обычно приходится снова менять фокус на VS.

Майк Сталл предупредил, что этот трюк не работает только для управляемой отладки. Я не могу воспроизвести это, он отлично работает в VS2008 SP1.

1 голос
/ 07 декабря 2009

Попробуйте добавить эту строку в приложение WCF:

System.Diagnostics.Debugger.Launch();

Если приложение не работает под отладчиком, вы получите окно с вопросом, хотите ли вы отладить приложение.

0 голосов
/ 07 февраля 2011
#if debug

// Do stuff
if(!System.Diagnostics.Debugger.IsAttached)
{
System.Diagnostics.Debugger.Launch();
}
System.Diagnostics.Debugger.Break();

#endif
0 голосов
/ 07 декабря 2009

Макросы VS.NET довольно мощные. Я думаю, что вы могли бы довольно легко написать скрипт присоединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...