Получить программу Win32 для запроса отладчика при запуске? - PullRequest
3 голосов
/ 13 октября 2009

У нас есть приложение C32 Win32, которое порождает, используя Qtcess Qt (несомненно, оболочку для CreateProcess ()), вторичную «ведомую» программу.

К сожалению, при отладке системы с помощью Visual Studio 2008 отладчик не подключается автоматически к порожденному процессу.

Я знаю, что можно программно вызывать точку останова отладчика с помощью __debugbreak (), но возможно ли, чтобы подчиненная программа открывала окно «Выбор программы для отладки» сразу при запуске, так как в данный момент мы должны участвовать вручную прикрепить к новому процессу?

Ответы [ 2 ]

4 голосов
/ 13 октября 2009

Использовать Параметры выполнения файла изображения . В качестве отладчика по умолчанию для подключения к процессу вы можете указать отладчик Visual Studio, работающий точно по времени.

Если вы используете отладчики командной строки , вы также можете использовать ntsd -o для автоматической отладки дочерних процессов.

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

Еще один интересный трюк, который я узнал из прочтения Джеффри Рихтера «Программирование приложений для Windows»

  1. Создание библиотеки DLL с вызовом DebugBreak () в DLLMain () в случае DLL_PROCESS_ATTACH
  2. Добавить путь к вашей новой DLL в реестре (это список через запятую):
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

Загрузчик изображений создаст ваш процесс и загрузит все библиотеки DLL, внесенные в реестр. Это вызовет DLLmain, и ваша точка останова получит удар.

Примечание. Чтобы избежать отладки всех приложений, проверьте имя процесса с помощью «GetModuleBasename» и вызывайте точку останова только для тех процессов, которые вас интересуют.

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