Je déplace un projet vers le nouveau kit de développement natif Android (c'est-à-dire JNI) et j'aimerais attraper SIGSEGV, si cela se produit (peut-être aussi SIGILL, SIGABRT, SIGFPE) afin de présenter une belle boîte de dialogue de rapport de plantage, au lieu de (ou avant) ce qui se passe actuellement: la mort immédiate et sans cérémonie du processus et éventuellement une tentative du système d'exploitation pour le redémarrer. ( Modifier: la machine virtuelle JVM / Dalvik capte le signal et enregistre une trace de pile et d'autres informations utiles; je veux juste offrir à l'utilisateur la possibilité de m'envoyer ces informations par courrier électronique.)
La situation est la suivante: un grand corps de code C que je n'ai pas écrit fait l'essentiel du travail dans cette application (toute la logique du jeu) et bien qu'il soit bien testé sur de nombreuses autres plates-formes, il est tout à fait possible que moi, dans mon Android port, va le nourrir des déchets et provoquer un crash dans le code natif, donc je veux les vidages sur incident (natifs et Java) qui apparaissent actuellement dans le journal Android (je suppose que ce serait stderr dans une situation non Android). Je suis libre de modifier arbitrairement le code C et Java, bien que les rappels (entrant et sortant de JNI) soient environ 40 et, évidemment, des points bonus pour les petits diffs.
J'ai entendu parler de la bibliothèque de chaînage de signaux dans J2SE, libjsig.so, et si je pouvais installer en toute sécurité un gestionnaire de signaux comme celui-ci sur Android, cela résoudrait la partie captivante de ma question, mais je ne vois aucune bibliothèque de ce type pour Android / Dalvik .