2010-02-16 10 views
7

Używam VS 2008 na 64-bitowym komputerze XP. Debuguję 32-bitową bibliotekę DLL w C++ za pośrednictwem programu konsoli. Projekty DLL i EXE są zawarte w tej samej SLN, dzięki czemu mogę zmodyfikować bibliotekę DLL podczas testu.Okno debugowania programu nie zostanie zamknięte

Co się dzieje, od czasu do czasu zabijam program za pomocą debugowania | Zatrzymaj debugowanie (Shift-F5). VS zatrzymuje program, ale okno konsoli pozostaje otwarte! Jeśli siedzę w punkcie przerwania i uderzam w Shift-F5, to zakończy się to poprawnie, ale jeśli program działa w pełnym zakresie, kiedy go zatrzymuję, często widzę to.

Dużym problemem jest to, że nie mogę zamknąć okien zombie. Używanie polecenia Zakończ zadanie w Menedżerze zadań nic nie robi (brak komunikatu, brak niczego). Kiedy wyłączam maszynę, nie jest to możliwe z powodu sierot i muszę uciekać się do faktycznego wyłączenia zasilania.

Myślę, że jest to związane z posiadaniem projektu DLL i EXE w tym samym SLN, ponieważ przez wiele miesięcy pracowałem nad tym projektem w 2 instancjach VS, jedną dla biblioteki DLL i drugą dla EXE. Podczas pracy nieustannie przeskakiwałbym między oknami. Ten problem nigdy się nie zdarzył, dopóki nie umieściłem dwóch projektów w jednej SLN. Pojedyncza SLN działa o wiele lepiej, ale ta anomalia jest bardzo irytująca.

Jakieś pomysły dla każdego?

UPDATE

Po nieco poszukiwania (here), stwierdziliśmy, że wydaje się, że mają do czynienia z jednym z aktualizacji z ostatniego wtorku (KB977165 lub KB978037). Dziękuję Microsoft za doskonałe testy przed wydaniem.

Odpowiedz

0

Zdecydowanie widziałem osobliwości z uchwytami, które nie zostały zwolnione, a menedżer zadań nie działa prawidłowo. Zauważyłem, że Process Explorer wykonuje dobrą robotę i zastanawia się, co się dzieje z osieroconymi oknami, blokadami plików i ogólnie dziwnymi zachowaniami, które się zdarzają.

0

To samo niedawno zaczęło się ze mną dziać. Używam 32-bitowego systemu Windows XP, VS 2008. Nie sądzę, że jest to związane z organizacją projektów. Być może spowodowała to łatka zainstalowana za pośrednictwem usługi Windows Update.

1

Okna konsoli są własnością csrss.exe, który jest procesem systemowym, a właściwie jedynym procesem, którego nie możesz zabić (przynajmniej na XP, możesz zabić inne procesy systemowe, jeśli zrobisz to we właściwej kolejności, poszukaj artykułu "Uruchamianie Windows bez usług" Marka Russinovicha). Więc, niestety, jazda na rowerze wydaje się być jedynym sposobem na pozbycie się okien konsoli zombie.

0

Najlepszą rzeczą, jaką udało mi się znaleźć to obejście: wiązania odłączyć wszystkie przycisku Shift-F5. W ten sposób w zasadzie zwalniasz okno z debuggera i możesz zamknąć okno bez kończącego się osieroconego okna cmd. Mam nadzieję, że MS zaproponuje rozwiązanie. Narzędzia -> Opcje -> Środowisko -> Klawiatura.

Nawiasem mówiąc, opisany powyżej proces działa tylko sporadycznie. Ponieważ ten problem zdaje się występować dość często, czy istnieje sposób, aby w końcu rozwiązać go raz na zawsze?

0

Mcrosoft potwierdzić i opisać ten problem, tutaj: http://support.microsoft.com/kb/982551/

Wydali hot fix, który można uzyskać od: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

(musisz podać adres e-mail, a następnie wyślą instalator HotFix chroniony hasłem)

+1

Wow, Microsoft potrzebował 4 miesięcy na rozwiązanie tego problemu. Można by pomyśleć, że ten byłby na szczycie listy. Używają tam Visual Studio, prawda? –

+0

4 miesiące są szybkie od M $ ... Zajęło 6-8 lat, aby naprawić kilka krytycznych zabezpieczeń w Internet Explorerze ... – Calmarius

+0

KB 982551 wydaje się nie mieć pobrania dla 64-bitowego XP – danio

0

Podano kilka dobrych rozwiązań.

Alternatywa: zamiast zatrzymywać sesję debugowania, naciskając SHIFT-F5, naciśnij CTRL-C, co powoduje, że program kończy się normalnie eliminując źródło problemu.

Powiązane problemy