SIGABRT
est couramment utilisé par libc et d'autres bibliothèques pour interrompre le programme en cas d'erreurs critiques. Par exemple, la glibc envoie un SIGABRT
en cas de détection d'un double-free ou d'autres corruptions du tas.
En outre, la plupart des assert
Les implémentations font appel à SIGABRT
en cas d'échec de l'affirmation.
En outre, SIGABRT
peut être envoyé depuis n'importe quel autre processus comme n'importe quel autre signal. Bien sûr, le processus d'envoi doit être exécuté par le même utilisateur ou Root.
7 votes
Il y a plusieurs façons de procéder. La plus simple, si vous avez écrit le programme, est d'enregistrer un gestionnaire de signal pour SIGABRT qui imprime cette information et vide ses flux avant de revenir. La deuxième façon la plus simple est d'exécuter le programme dans strace. Le troisième moyen le plus simple est de s'assurer que le programme génère un fichier core lorsqu'il se plante, et de le découvrir via le core dump.