отладка динамически загружаемого исполняемого файла - PullRequest
2 голосов
/ 29 марта 2011

Мне передали заявку в службу поддержки, и я пытаюсь понять, как это сделать.У меня есть источник, и я могу внести некоторые изменения, но я, очевидно, не хочу полностью менять архитектуру приложения.

Приложение представляет собой решение VS2010, состоящее из 9 различных проектов.Основным является приложение Windows Form, но оно выделяет других в других потоках.

Вот в чем сложность.Несмотря на то, что разные проекты являются частями одного и того же решения, они представляют собой отдельные исполняемые файлы, а не библиотеки DLL.Когда основная программа запускает один из других проектов, она делает это, создавая новый процесс, устанавливая имя файла исполняемого файла, аргументы запуска и другие различные параметры в объекте process.StartInfo, а затем вызывает process.Start ().

Как установить точки останова и отладить подчиненные исполняемые файлы?Я не могу присоединиться к ним, пока они не загружены, но они не загружаются, пока не будет вызван process.Start (), и к тому времени уже слишком поздно.Есть ли вызов метода, который я могу вставить в основную программу, чтобы он загружал исполняемый файл (чтобы я мог установить в нем точки останова) до того, как он фактически начнет выполняться?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

Одним из простых решений может быть добавление вызова функции DebugActiveProcess в функцию "main" каждого процесса, который участвует в вашем приложении.

0 голосов
/ 29 марта 2011

Можете ли вы перекомпилировать другие исполняемые файлы?Если это так, вы пытались поместить DebugBreak в подходящих местах?(или _asm int 3).

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

...