Как отладить .exe, запущенный другим .exe в Delphi - PullRequest
3 голосов
/ 24 октября 2009

Я хочу отладить App2.exe, который запускается App1.exe. Если бы App2.exe был dll, я мог бы указать хост-приложение, но, похоже, это не работает с .exe.

Теперь я использую «присоединить к процессу», но это бесполезно, если App2.exe падает перед тем, как я это сделаю.

Есть ли способ сделать это с необходимостью присоединиться к процессу вручную?

Ответы [ 5 ]

5 голосов
/ 25 октября 2009

Установить параметр отладки "debug spawned Процессы". По умолчанию он выключен. Когда App1 запускает новый процесс, отладчик приостанавливается. Если отладчик еще не подключен к новому процессу автоматически, подключитесь к нему и возобновите его выполнение.

2 голосов
/ 24 октября 2009

Нет, но может быть способ заставить его правильно прикрепиться. Найдите что-то, что, как вы знаете, произойдет в App2 незадолго до точки сбоя, и пусть в этом месте появится модальное диалоговое окно. Тогда оно не будет продолжаться, пока вы не откажетесь от него, и у вас будет время подключить отладчик.

1 голос
/ 07 ноября 2009

Если вы используете Windows, для него есть встроенная поддержка. в основном, вы можете указать загрузчику Windows запускать какой-то другой процесс при каждом запуске определенного процесса. например, вы можете указать Windows всегда запускать winword.exe всякий раз, когда вы нажимаете на notepad.exe

вы можете использовать эту возможность для автоматического запуска отладчика при каждом запуске вашего процесса (именно поэтому эта функция была изначально представлена, однако вы не ограничены в запуске только отладчиков :))

Вы можете прочитать, как именно это сделать здесь . Вы также можете скачать инструменты отладки для пакета Windows и использовать GFlags, чтобы сделать это за вас.

1 голос
/ 24 октября 2009

Полагаю, вы можете запустить app2.exe самостоятельно и передать в него все необходимые параметры командной строки.

0 голосов
/ 24 октября 2009

Если оба приложения принадлежат вам и у вас есть код, я предлагаю следующее:

  1. Сделать режим отладки для обоих приложений. Использовать внешний inc-файл, например
  2. Запустите две IDE и загрузите каждое приложение в свою собственную IDE. Сборка в режиме отладки
  3. Если все сделано правильно, теперь вы можете отлаживать внутреннюю связь между приложениями

У меня есть проект, в котором сервер порождает несколько рабочих процессов exe, в которых каждый размещает свой собственный модуль dll. У меня есть режим отладки, в котором я могу указать, какая DLL будет загружена, и у меня могут быть запущены как процессы, так и взаимодействие между IDE. Это лучший способ, который я нашел до сих пор.

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