У меня есть проект C ++ в Visual Studio 2008, который при запуске порождает другой процесс (из-за используемой библиотеки GUI).Однако, когда я выхожу из основного процесса (используя Ctrl-C или останавливая отладчик), порожденный процесс (и, следовательно, GUI) остается.Это побочный эффект используемой библиотеки и характера проекта - она предназначена для встраивания и, следовательно, никогда не «выходит», но отладка и тестирование выполняются на основе Windows.Затем потерянный процесс лишает меня возможности снова запускать программу, не убивая ее.
Используя Process Explorer, я вижу, что порожденный процесс является дочерним процессом отлаживаемого процесса.Я хотел бы, чтобы, когда я заканчивал отладку проекта, убивал все дочерние процессы.
В проекте Chromium есть макрос, который будет захватывать дочерние процессы для подключения к ним.Он предназначен для того, чтобы быть связанным с кнопкой в графическом интерфейсе VS, и кажется, что он специфичен для Chrome (то есть вам понадобится другая кнопка для другого проекта / родительского процесса).
Я посмотрелиспользование макроса DebuggerProcessEvents::OnProcessStateChanged
, идея которого заключается в том, что, когда отладчик останавливается, я могу пройти через дочерние процессы, используя идею, аналогичную макросу Chromium иубей их... но это событие никогда не вызывается.
Есть мысли?Этот проект основан на Makefile, поскольку код генерируется вне Visual Studio, поэтому я буду ограничен в параметрах, которые можно установить для проекта.