2010-04-12 4 views
7

J'essaie de déboguer un programme qui s'arrête de manière inattendue. Quand je dis "arrête, je veux dire un moment, je vois toutes les fenêtres qui s'affichent, chacune montrant toutes les bonnes données, puis soudainement toutes les fenêtres disparaissent. programme dans le débogueur en espérant que ce serait en quelque sorte piège tout ce qui était à l'origine du programme pour abandonner, mais même dans le débogueur le programme se termine simplement brusquement la dernière ligne dans le débogueur est:.Le programme se termine brutalement même dans le débogueur. Comment cela s'est-il produit?

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

Mon programme, ce qui est extrêmement Mon soupçon est que peut-être un auto-test a échoué et peut-être que je viens d'appeler "exit()", en oubliant de faire apparaître une boîte de dialogue expliquant pourquoi ..

stion est maintenant, comment puis-je savoir à partir de quel point dans le code, mon programme a quitté?

+1

Une des solutions consiste à rechercher tout le code pour les appels à des fonctions telles que exit() et y placer des points d'arrêt. Vraiment, si vous avez des appels à exit() déballés c'est un signe de mauvaise conception - vous devriez avoir une fonction wrapper qui affiche un message, puis appelle exit(). – sharptooth

Répondre

4

La réponse de Marcelo est géniale. Si pour une raison quelconque, vous ne pouvez pas rompre exit, installez une fonction (ne prend aucun argument, renvoie void) avec atexit et cassez dedans.

5

Définissez un point d'arrêt sur exit() et terminate() (peut-être que l'un appelle l'autre, mais je ne suis pas sûr).

+0

temrniate() appelle abort(), pas exit(). – sharptooth

+0

@Marcelo Cantos: Vous dites "Définir un point d'arrêt sur exit()" comme si je n'en avais qu'un ... mais il y en a des centaines. Suggérez-vous que je mette en quelque sorte un breakopoint * dans * exit()? – Mick

+0

@Mick: dans un débogueur de ligne de commande, 'break exit' ferait exactement cela. – Potatoswatter

Questions connexes