2017-02-06 3 views
0

Я написал две программы в C++, A и B. В программе A я вызываю B с аргументами (консольная программа).Как программа отладки, вызванная другой программой

Что я хочу, когда я вызываю B, хочу быть в режиме отладки (известно, что я запускаю программу A). Как я могу установить это в Visual Studio 2010?

Спасибо

+0

Возможный дубликат [Может ли Visual Studio быть выполненным для отладки дочерних процессов, таких как WinDBG?] (Http://stackoverflow.com/questions/771039/can-visual-studio-be-made-to-debug-child-processes -like-windbg) – IInspectable

ответ

1

Когда у меня была такая же проблема, я только что добавил Sleep(10000); (или аналогичным образом) в начале программы B, а затем вручную подключить отладчик. Вы также можете сделать это условным в аргументе переменной среды/командной строки/...

Я знаю, что это взлом - но это вид работ; и также предпочла бы лучшее решение.

+0

может быть, это будет лучший трюк :) –

+0

Это взломать и требует, чтобы вы * могли * изменить код программы B. Улучшенные решения существуют. Предлагаемый дубликат предлагает два таких решения. – IInspectable

+0

@Inspectable. В зависимости от обстоятельств могут быть более эффективные решения, но хром-макро-ссылка была мертва, а Опции выполнения изображения - изменение реестра взад и вперед. Для инструмента дочернего процесса требуется VS 2013 Update 2; или позже - и OP используется VS 2010. –

-1

В программе B в начале основного вызова ::DebugBreak() это позволит присоединить отладчик к вашему 2 процессу. См.: https://msdn.microsoft.com/en-us/library/windows/desktop/ms679297(v=vs.85).aspx

+0

Нет, это не сработает. 'DebugBreak()' разбивается на отладчик, когда отладчик уже подключен. Это прямо из [документации] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms679297.aspx): * «Если процесс не отлаживается, функция использует логику поиска стандартного обработчика исключений. В большинстве случаев это приводит к тому, что вызывающий процесс заканчивается из-за необработанного исключения точки останова. »* – IInspectable

+0

, что сделало мои прог-сбои при вызове! –

+0

Я получаю приятное диалоговое окно, перефразируя «Произошло исключение. Вы хотите прервать, повторить, отладить процесс?» –