2016-01-18 4 views
1

У меня есть программа, которая загружает программу отдельно, чтобы выполнить некоторую работу для нее. Эта отдельная программа запускается с первой, используя Process.Start(), и мне нужно, чтобы она загружалась в отладчик Visual Studio на один шаг через нее.У меня есть исполняемый файл VC++, автоматически загружающий отладчик

К сожалению, хотя я могу запустить программу в сеансе отладчика, она по-прежнему запускает второй как «правильный» процесс. Мне нужно открыть эту вторую программу в сеансе отладчика. Обычно я просто присоединяю отладчик к процессу, когда он будет запущен, но в этом случае мне нужно его быстро остановить (в функции CInitDialog()), и, как я могу, я не могу обойти код в этом дело.

Решение, которое я нашел прямо здесь, в Stack Overflow, сказал, чтобы использовать Debugger.Launch(), но это похоже на C#.

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

Как я могу это сделать?

+0

http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/24/introducing-the-child-process-debugging-power-tool.aspx –

+0

Коди, вы должны сделать так, чтобы ответ Я могу его продвинуть. Это не хорошо для меня, так как я запускаю VS2010, но он по-прежнему полезен для других. – paxdiablo

+0

То же самое для меня, я только что вспомнил об этом и подумал, что это интересно. Я не мог оправдать это как комментарий, потому что я никогда не использовал его сам. –

ответ

0

Visual C++ имеет аналогичную функцию для C# Debugger.Launch(), это называется DebugBreak(). Это на самом деле ломает приложение и представит вам диалоговое окно с вопросом, как вы хотите, чтобы справиться с этим:

enter image description here

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

Таким образом, вы можете просто вставить этот код в свой код, где хотите разбить, и разрешить первой программе запускать его в соответствии с нормальным. Вторая программа запустится и сломается там, где вы разместили оператор, и вы можете сделать одноэтапный шаг и сделать все другие чудесные вещи, которые позволяет отладчик.

Смежные вопросы