Окно отлаженной программы не закроется - PullRequest
8 голосов
/ 16 февраля 2010

Я использую VS 2008 на 64-битной машине XP. Я отлаживаю 32-битную C ++ DLL через консольную программу. Проекты DLL и EXE содержатся в одном SLN, так что я могу изменить DLL во время тестирования.

Что происходит, так это то, что время от времени я убиваю программу с помощью Debug | Остановить отладку (Shift-F5). VS останавливает программу, но окно консоли остается открытым! Если я сижу в точке останова и нажимаю Shift-F5, она будет правильно завершена, но если программа запускается с полным наклоном, когда я ее останавливаю, я часто вижу это вместо этого.

Большая проблема в том, что я не могу закрыть эти окна зомби. Использование End Task в диспетчере задач ничего не делает (ни сообщения, ни ничего). Когда я выключаю машину, она не может это сделать из-за сирот, и мне приходится прибегать к фактическому отключению питания.

Я думаю, что это связано с тем, что проект DLL и EXE находится в одном и том же SLN, так как в течение нескольких месяцев я работал над этим проектом в 2 экземплярах VS, один для DLL, а другой для EXE. Я постоянно прыгал вперед и назад между окнами, пока работал. Эта проблема никогда не возникала, пока я не объединил два проекта в один SLN. Один SLN работает намного лучше, но эта аномалия очень раздражает.

Есть идеи у кого-нибудь?

UPDATE

После небольшого поиска ( здесь ) я обнаружил, что, похоже, это связано с одним из обновлений с прошлого вторника (KB977165 или KB978037). Спасибо Microsoft за отличное предварительное тестирование.

Ответы [ 7 ]

5 голосов
/ 22 февраля 2010

Это KB978037.Удаление программы решает проблему.

Подробнее здесь

1 голос
/ 22 февраля 2010

Окна консоли принадлежат csrss.exe, который является системным процессом и фактически единственным процессом, который вы не можете уничтожить (по крайней мере, в XP вы можете уничтожить другие системные процессы, если вы сделаете это в правильном порядке, посмотрите за статью «Запуск Windows без сервисов» Марка Руссиновича). Так что, к сожалению, отключение питания кажется единственным способом избавиться от окон консоли зомби.

0 голосов
/ 22 июля 2010

Некоторые хорошие решения были предоставлены здесь.

Альтернатива: вместо остановки сеанса отладки, нажав SHIFT-F5, нажмите CTRL-C, что приведет к нормальному завершению программы, устраняя источник проблемы.

0 голосов
/ 17 июня 2010

Mcrosoft подтверждает и описывает эту проблему здесь: http://support.microsoft.com/kb/982551/

Они выпустили исправление, которое вы можете получить: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

(вам нужно указать адрес электронной почты, а затем вам пришлют установщик HotFix, защищенный паролем)

0 голосов
/ 05 мая 2010

Лучшее, что мне удалось найти, - это обходной путь: привязка отсоединения всех к кнопке shift-F5. Таким образом, вы в основном освобождаете окно от отладчика и можете закрыть само окно без оконного окна cmd. Надеюсь, MS придумает решение. Сервис -> Параметры -> Среда -> Клавиатура.

Кстати, процесс, который я описал выше, работает только время от времени. Поскольку эта проблема, по-видимому, возникает довольно часто, есть ли способ окончательно решить ее раз и навсегда?

0 голосов
/ 17 февраля 2010

То же самое недавно начало происходить со мной. Я использую Windows XP 32-bit, VS 2008. Я не думаю, что это связано с тем, как организованы ваши проекты. Возможно, патч, установленный через Центр обновления Windows, вызвал это.

0 голосов
/ 17 февраля 2010

Я определенно видел странности с не выпускаемыми дескрипторами и не работающим диспетчером задач.Я обнаружил, что Process Explorer делает хорошую работу и выясняет, что происходит с осиротевшими окнами, блокировками файлов и вообще странным поведением, которое происходит.

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