Отладка приложения при запуске через ShellExecute - PullRequest
0 голосов
/ 30 ноября 2010

Я пытаюсь запустить приложение через вызов API ShellExecute().Это приложение содержит только основную функцию, которая выполняет некоторую обработку и завершает работу.

Теперь я поставил DebugBreak() в начале main.Когда вызывается ShellExecute(), приложение запускается успешно, но оно не требует прерывания.

Как отладить мое приложение при запуске из другого приложения, используя ShellExecute()?

Я используюVC ++.

Ответы [ 4 ]

1 голос
/ 30 ноября 2010

Если DebugBreak () вам не подходит, попробуйте _CrtDbgBreak (). Обратите внимание, что _CrtDbgBreak работает только в отладочной сборке.

_CrtDebugBreak определенно работает для меня, чтобы заставить запуск запущенного процесса прерваться при запуске, хотя я почти уверен, что DebugBreak также делает.

Обратите внимание, что обе функции будут выглядеть так, как будто произошел сбой процесса, так как они вызывают исключение. Это нормально и дает вам возможность подключить отладчик через диалог сбоя. (Диалог сбоя также позволяет вам завершить процесс; очевидно, не используйте его.)

Также обратите внимание, что если у вас есть универсальный обработчик исключений SEH вокруг вашей основной программы, то вызов исключения DebugBreak & friends будет проглочен, и приложение просто закроется, не показывая диалоговое окно сбоя или не позволяя вам присоединиться к нему.

0 голосов
/ 26 февраля 2015
0 голосов
/ 08 июня 2012

вы можете попробовать это, это нормально в системе XP.

app.exe - это имя вашего приложения,

-s1 ...- s3 - аргументы командной строки.

HINSTANCE hRet = ShellExecute (NULL, L "open", L "vsjitdebugger.exe", L "app.exe -s1 a1 -s2 a2 a3 -s3", szExePath, SW_SHOW);

0 голосов
/ 30 ноября 2010

Вы не можете сделать это с VC ++;с WinDbg это просто .childdbg 1 для отладки всех дочерних процессов.С VC ++ вы можете использовать параметры исполнения файла изображения в крайнем случае - проверьте http://codereflect.com/2009/09/20/how-to-debug-child-process-using-windbgvisual-studio/ для получения дополнительной информации.Правда, если у вас есть время выучить WinDbg, в этом дело гораздо лучше.

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