Как я могу отладить процесс (1.exe), запущенный под другим процессом (2.exe)? - PullRequest
3 голосов
/ 16 сентября 2008

1.exe не дает мне достаточно времени, чтобы запустить IDE и подключить 1.exe к отладчику для взлома.

Ответы [ 6 ]

6 голосов
/ 16 сентября 2008

Я бы предложил в этом случае использовать тот же подход, что и для служб NT. Они также запустятся и, как правило, не дадут вам достаточно времени, чтобы подключить отладчик для процедур запуска.

Подробности описаны здесь: http://www.debuginfo.com/articles/debugstartup.html

Короче говоря, вы добавляете запись реестра для второго exe:

HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Выполнение файла изображения Options \ 2.exe Debugger = «C: \ Progs \ МСВС \ Common7 \ язь \ devenv.exe / debugexe "(REG_SZ)

Измените c: \ progrs \ msms \ в соответствии с вашими настройками.

Надеюсь, это поможет.

0 голосов
/ 17 сентября 2008

Вы не упомянули, какой язык вы используете. Но если вы используете C # или VB.NET, вы можете добавить Debug.Break () или Stop, чтобы вызвать приглашение присоединить отладчик к процессу.

Или, как уже упоминалось выше, просто используйте что-то вроде Console.Readline () или MessageBox.Show (), чтобы приостановить запуск процесса, пока вы не можете подключить к нему отладчик.

0 голосов
/ 16 сентября 2008

Если вы хотите использовать отладчик, отличный от Visual Studio, WinDBG может автоматически отлаживать дочерние процессы (только собственный код).

0 голосов
/ 16 сентября 2008

Как запускается 1.exe? Если вы можете запустить его с помощью CreateProcess (), вы можете запустить процесс в приостановленном состоянии, подключить отладчик и затем освободить новый процесс.

0 голосов
/ 16 сентября 2008

Вы можете добавить некоторые команды препроцессора для отладочных сборок - просто не забудьте собрать свою версию в режиме выпуска:

#ifdef DEBUG
Thread.Sleep(10000);
#endif
0 голосов
/ 16 сентября 2008

Я предполагаю, что у вас есть источник для 1.exe (если вы отлаживаете его), затем просто вставьте оператор в начале, который заставит его зависать достаточно долго, чтобы подключить отладчик. (getch (), если вы в отчаянии и не интерактивны.)

После вложения просто перейдите к следующему утверждению и отпустите.

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