Connaitre la ligne de l'arret du programme en cas de "bug" ne suffit pas en général car une fonction peut être appelée en plusieurs endroits. Pour connaitre la sequence d'appel des fonctions, et donc quel appel de la fonction coupable au moment d'un "exit", le plus simple est d'utiliser la fonction "atexit" de la library stdlib:
#include <stdlib.h} ... void myexit() { cout << "Fin" << endl; } ... void main() { atexit(myexit); ... }
On mettra ensuite un "breakpoint" sur la ligne "cout<<"Fin"..." de sorte que le debugger s'arêtera automatiquement sur cette ligne en cas de problème. En effet, l'effet de atexit(func) est de forcer l'execution de la fonction func en cas d'interruption par le système genre écriture en zone protégée... Ensuite l'appel de "where" donne la liste d'emboitement des fonctions et donc la position exacte du problème.