2010-01-23 20 views
8

L'applicazione su cui sto lavorando non inizia nel debugger di Visual Studio 2005.applicazione non inizia nel debugger

Ecco quello che faccio:

  • ricostruisco l'applicazione e premere F5 per iniziare si
  • il titolo della finestra di VS2005-dice "ProjectName (running) ..."
  • I pulsanti debugger appaiono ma sono in grigio
  • l'applicazione appare nel task manager di Windows, ma io t ha solo 80k di memoria nell'uso
  • Non succede nulla per un lungo periodo di tempo e alla fine viene visualizzata una finestra con il seguente messaggio di errore: "Il debug è in fase di arresto ma non è ancora completo. È possibile forzare il debug per arrestare immediatamente, ma qualsiasi processo che si sta disconnettendo può invece essere terminato. Questa finestra si chiuderà automaticamente quando il debug è completamente interrotto ". La finestra non scompare, quindi dopo un po 'premo il pulsante" Stop ora "
  • Nulla accade per un po' (i pulsanti del debugger sono ancora visibili, ma in grigio
  • Qualche tempo dopo viene visualizzata una nuova finestra: "Impossibile avviare il programma" (percorso di exe) ". OLE har skickat en begäran och väntar på svar ". L'ultima frase è svedese per" OLE ha inviato una richiesta ed è in attesa di risposta ".Premendo OK, i pulsanti del debugger sono scomparsi.
  • L'applicazione è ancora in esecuzione, e ha ancora solo 80k in utilizzo della memoria.
  • cerco di terminare il processo con il task manager, ma non viene ucciso.
  • ho smesso di Visual Studio e, infine, il processo è andato.

il l'applicazione è un progetto C++ non gestito, che usa molti file DLL come plugin. Sto usando il runtime "multi-threaded debug" e mi sono assicurato che tutto dipenda le richieste sono compilate rispetto allo stesso runtime.

E 'stato mentre facevo che questo problema è apparso tutto ad un tratto. Ho provato a invertire le mie modifiche, ma non aiuta. Il riavvio del computer non aiuta neanche.

Ho l'applicazione in esecuzione una o due volte a caso. Se ho chiuso l'applicazione e riavviato, non è stato avviato. Quindi non penso che questo sia dovuto alla mia configurazione.

Qualche idea?

Un'altra nota: l'applicazione si avvia e viene eseguita come dovrebbe se l'avvio da Visual Studio.

risposta

1

Ok, ho risolto il mio problema, ma non ho idea di come.

Una cosa che ho provato è stata l'eliminazione di tutti i file di build e file exe e dll, quindi ricompilare tutto. Ma quello non ha aiutato.

Ho quindi provato una cosa a caso: i plugin erano nella stessa soluzione. Così li ho rimossi e ho provato a correre di nuovo.E questa volta ha funzionato! Quindi ho aggiunto tutti i progetti di plug-in e lo è ancora !

Quindi, credo che non saprò mai cosa è successo. Ma rimuovere e aggiungere un progetto a una soluzione potrebbe risolvere anche qualcun altro problema :) :)

+0

Dopo alcune sessioni ho avuto il problema. Ma rimuovere qualsiasi progetto dalla soluzione casuale lo fa funzionare di nuovo! – Jonatan

+0

Ancora più informazioni: prima che questo problema apparisse, avevo problemi con alcuni plugin DLL che allocavano memoria con malloc(), che era stato liberato da un'altra DLL con free(). Ciò ha provocato un errore di asserzione, anche se tutti usano lo stesso runtime. Sto lavorando su questo errore fornendo un callback a una funzione che chiama malloc(). Non ho ancora corretto tutti i plug-in e sembra che questo problema venga visualizzato non appena ho riscontrato quell'errore. E poi è impossibile avviare il programma, anche dopo aver riavviato VS2005, fino a quando non ho rimosso un progetto ... – Jonatan

+0

Soluzione finale: ho eliminato la mia directory della soluzione e ho eseguito un checkout pulito. Il problema è finito, permanentemente. Probabilmente alcuni file di build che erano corrotti e che non sono stati rimossi con il comando "clean solution". Ho la vecchia directory intatta, nel caso in cui voglio approfondire ulteriormente. – Jonatan

2

Sembra un DllMain() anomalo in una delle DLL collegate implicitamente utilizzate dal programma. Si potrebbe ottenere un suggerimento dalla finestra Output, elenca i nomi delle DLL man mano che vengono caricati. Se è wininet.dll, sei caduto in una trappola deadlock con il server dei simboli.

+0

Interessante, ma ora ho provato a eliminare tutti i plugin (tutte le DLL) e la finestra di output è vuota. – Jonatan

Problemi correlati