Uno dei miei programmi si blocca periodicamente, ma non so perché. Lo sto eseguendo in modalità di debug, ma non compare nulla. Il programma esce all'improvviso. Ho avuto altri bug che generano un'eccezione ... ma non questa. C'è un modo magico di catturarlo o qualcosa del genere?Come eseguire il debug di un programma quando si blocca senza l'eccezione?
risposta
Presumibilmente lo stai eseguendo da Visual Studio e per qualche motivo non si ferma nel debugger con un'eccezione non rilevata, nel qual caso puoi provare a catturare l'arresto anomalo dall'esterno di Visual Studio. Vedere la mia risposta allo System.AccessViolationException from unmanaged code?, in particolare how to capture a crash dump.
Se si arresta solo periodicamente, ma entro un periodo di tempo ragionevolmente breve, iniziare con Sysinternals procdump. Avviare il file eseguibile dall'esterno Visual Studio, quindi eseguire:
procdump -e <YourExecutableNameOrPid>
e attendere che per raccogliere un crash dump - ammesso che esce a causa di un'eccezione non gestita - quindi caricare il crash dump in VS 2010 o WinDbg.
Il programma appena esce improvvisamente
sicuramente verificare che il codice, o di una delle librerie in uso, non chiama exit() (sì potrebbe sembrare troppo semplice, ma noi ore una volta perse tracing arresti di programmi casuali ritorno a chiamate exit() ..). In tal caso, inserire un punto di interruzione o passare a throw(), quindi eseguire di nuovo. In caso contrario, la risposta di Sean sembra legittima.
We ha avuto questo problema esatto una volta e ci sono voluti anni per capire. Vale la pena controllare. –
Inoltre, è necessario impostare un punto di interruzione o qualche istruzione di registro come ultima riga in main()/winmain(). Forse il programma termina "normalmente" quindi in modo inaspettato. –
@Red: È un'app della GUI WPF ... tutto il codice è in eventi, non penso che dovrebbe mai arrivare alla fine. @stijn: Abbastanza sicuro di non aver scritto nessuna chiamata di uscita, ma controllerò due volte. – mpen
È possibile trovare altri suggerimenti al seguente post simile: Third-party dll crashes program with no exception thrown.
- 1. Come eseguire il debug di un programma Java senza utilizzare un IDE?
- 2. Come eseguire il debug di un programma compilato con 'make'?
- 3. Come eseguire il debug di un deadlock?
- 4. Come eseguire il debug di PhantomJS quando si esegue Karma
- 5. Come si avvia un programma con argomenti durante il debug?
- 6. messaggio gdb strano quando il debug programma
- 7. Il programma semplice che utilizza i tubi si blocca
- 8. Come eseguire il debug di test JUnit simili a un normale programma Java in Eclipse
- 9. L'applicazione Windows Phone 8.1 si blocca quando non si esegue il debug async. Attesa
- 10. Il debug di Silverlight in Visual Studio 2010 si blocca quando si utilizza la tastiera
- 11. Esegui senza eseguire il debug in eclissi
- 12. Il programma si blocca nel debugger di Visual Studio
- 13. viene eseguita come debug, ma si blocca come versione
- 14. Eseguire il debug del codice C# senza eseguire l'applicazione
- 15. IntelliJ si blocca per circa 30 secondi prima di eseguire il debug
- 16. cosa succede quando si dice che un computer "si blocca" o si blocca?
- 17. Come posso eseguire il debug in un framework in Xcode?
- 18. Come eseguire il debug: Git pull si blocca durante git pull (sempre al 54%)
- 19. Come identificare il problema quando il programma si arresta in modo anomalo senza mostrare errori?
- 20. Il lavoratore Celery si blocca senza errori
- 21. node.js: il programma si chiude in modo imprevisto o si blocca semplicemente
- 22. Cosa fare quando un py.test si blocca silenziosamente?
- 23. Come eseguire il debug di un programma racchiuso in uno script libtool?
- 24. Come eseguire il debug di applicazioni PyQt senza riavvio?
- 25. Il selenio si blocca quando si avvia Firefox su Ubuntu
- 26. eclissi: come eseguire il debug di un programma Java come file .jar?
- 27. Il programma si blocca quando si chiude la connessione della porta seriale
- 28. Il programma si blocca quando si scarica una DLL che utilizza GdiPlus
- 29. In GDB, come faccio a eseguire un comando automaticamente quando il programma si ferma? (come display)
- 30. Come eseguire il debug di ConcurrentModificationException?
Cosa fai se disponi di AccessViolationException in un'app .NET 4 che colpisce in modo imprevisto un blocco catch? Sì, mi sta davvero succedendo proprio ora. Non potevo crederci da solo. Pianificare di porre una domanda separata su StackOverflow, ma prima di tutto leggo questa risposta. Poiché l'applicazione non si arresta in modo anomalo, non è necessario eseguire il dump di arresto anomalo, giusto? –
@JohnZabroski Mi piacerebbe ricorrere al debugging con WinDbg e SOS [EX]. Vedi la mia altra risposta collegata a sopra. –
Grazie, ho descritto il mio problema in dettaglio qui: http://stackoverflow.com/questions/39378849/what-to-do-when-accessviolationexception-in-net-4-app-defies-msdn-documented-be –