2010-02-16 18 views
7

Utilizzo VS 2008 su una macchina XP a 64 bit. Sto eseguendo il debug di una DLL C++ a 32 bit tramite un programma di console. I progetti DLL ed EXE sono contenuti nello stesso SLN in modo che sia possibile modificare la DLL durante il test.La finestra del programma di debug non si chiude

Quello che succede è che ogni tanto uccido il programma con Debug | Arresta il debug (Shift-F5). VS arresta il programma, ma la finestra della console rimane aperta! Se sono seduto a un breakpoint e preme Shift-F5, terminerà correttamente, ma se il programma è in esecuzione full-tilt quando lo interrompo, spesso lo vedo.

Il grosso problema è che non riesco a chiudere queste finestre di zombie. L'utilizzo di End Task in Task Manager non fa nulla (nessun messaggio, niente di niente). Quando spengo la macchina, non riesco a causa degli orfani e devo ricorrere a spegnere effettivamente la corrente.

Penso che questo sia collegato al progetto DLL ed EXE nello stesso SLN, poiché per mesi ho lavorato a questo progetto in 2 istanze VS, una per la DLL e l'altra per l'EXE. Continuavo a saltare avanti e indietro tra le finestre mentre lavoravo. Questo problema non è mai accaduto finché non ho inserito i due progetti in un singolo SLN. Il singolo SLN funziona molto meglio, ma questa anomalia è molto irritante.

Qualche idea a qualcuno?

UPDATE

Dopo un po 'di ricerca (here), ho trovato che sembra avere a che fare con uno degli aggiornamenti da Martedì scorso (KB977165 o KB978037). Grazie Microsoft per i tuoi eccellenti test pre-rilascio.

risposta

0

Ho sicuramente visto stranezze con le maniglie non rilasciate e il task manager non funziona correttamente. Ho trovato che lo Process Explorer fa un buon lavoro e capisce cosa succede con finestre orfane, blocchi di file e comportamenti generalmente strani che accadono.

0

La stessa cosa ha iniziato di recente a succedermi. Sto usando Windows XP a 32 bit, VS 2008. Non penso che questo sia collegato al modo in cui i tuoi progetti sono organizzati. Forse una patch installata tramite Windows Update lo ha causato.

1

Le finestre della console sono di proprietà di csrss.exe, che è un processo di sistema, e in realtà è l'unico processo che non è possibile uccidere (almeno su XP, è possibile eliminare gli altri processi di sistema se lo si fa nell'ordine corretto, cercare l'articolo "Esecuzione di Windows senza servizi" di Mark Russinovich). Quindi, sfortunatamente, il power cycling sembra essere l'unico modo per sbarazzarsi delle finestre della console zombie.

0

La cosa migliore che ho potuto trovare è una soluzione: vincolante il distacco tutto al tasto shift-F5. In questo modo si rilascia sostanzialmente la finestra dal debugger e si può chiudere la finestra stessa senza finire con una finestra cmd orfana. Speriamo che la SM abbia trovato una soluzione. Strumenti -> Opzioni -> Ambiente -> Tastiera.

Tra l'altro il processo descritto sopra funziona solo sporadicamente. Poiché questo problema sembra verificarsi abbastanza spesso, esiste un modo per risolverlo definitivamente una volta per tutte?

0

Mcrosoft riconoscere e descrivere questo problema, qui: http://support.microsoft.com/kb/982551/

Hanno pubblicato un hotfix, che si può ottenere da: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

(è necessario fornire un indirizzo email, poi mandano sei un installatore HotFix protetto da password)

+1

Wow, Microsoft ha impiegato 4 mesi per risolvere questo problema. Penseresti che questo sarebbe diventato il migliore della loro lista. Loro usano Visual Studio laggiù, don 'loro? –

+0

4 mesi sono veloci da M $ ... Ci sono voluti 6-8 anni per correggere diversi livelli di sicurezza critici nel loro Internet Explorer ... – Calmarius

+0

KB 982551 non sembra avere un download per XP a 64 bit – danio

0

Qui sono state fornite alcune buone soluzioni.

Un'alternativa: anziché interrompere una sessione di debug premendo MAIUSC-F5, premere CTRL-C, che fa terminare normalmente il programma eliminando la fonte del problema.

Problemi correlati