2010-04-12 31 views
7

Sto cercando di eseguire il debug di un programma che si arresta in modo imprevisto. Quando dico "si spegne, intendo un momento in cui vedo tutte le finestre che vengono visualizzate, ognuna delle quali mostra tutti i dati corretti, poi improvvisamente scompaiono tutte le finestre, non c'è nessun messaggio che segnala qualcosa di sbagliato. il programma nel debugger sperando che avrebbe in qualche modo trappola qualunque sia stata la causa del programma per abortire, ma anche all'interno del debugger il programma termina semplicemente bruscamente l'ultima riga nel debugger è:.Il programma termina bruscamente anche nel debugger - come è successo?

The program '[5500] test.exe: Native' has exited with code 0 (0x0). 

il mio programma, che è estremamente grande ed estremamente vecchio, ha un sacco di autodiagnosi.Il mio sospetto è che forse un autodiagnosi ha fallito e forse ho appena chiamato "exit()", dimenticando di far apparire una finestra di dialogo spiegando il perché:

ora, come posso scoprire da quale punto del codice, il mio programma ha smesso?

+1

Una delle soluzioni consiste nel cercare tutto il codice per le chiamate a funzioni come exit() e inserire i punti di interruzione. In realtà, se hai le chiamate a exit() da scartare, è un segno di cattiva progettazione: dovresti avere una funzione wrapper che mostra un messaggio e poi chiama exit(). – sharptooth

risposta

4

La risposta di Marcelo è eccezionale. Se per qualche motivo non puoi interrompere exit, installa una funzione (non accetta argomenti, restituisce void) con atexit e interrompila all'interno.

5

Impostare un punto di interruzione su exit() e terminate() (forse uno chiama l'altro, ma non sono sicuro).

+0

temrniate() chiama abort(), non exit(). – sharptooth

+0

@Marcelo Cantos: Tu dici "Imposta un punto di interruzione su exit()" come se ne avessi uno solo ... ma ce ne sono centinaia. Mi stai suggerendo di mettere un breakopoint * entro * exit()? – Mick

+0

@Mick: in un debugger della riga di comando, 'break exit' farebbe proprio questo. – Potatoswatter

Problemi correlati