Je déménage un projet vers le nouveau kit de développement natif d'Android (i.e. JNI) et j'aimerais attraper SIGSEGV, s'il se produit (éventuellement aussi SIGILL, SIGABRT, SIGFPE) afin de présenter une belle boîte de dialogue de rapport de crash, au lieu de (ou avant) ce qui se produit actuellement : la mort immédiate et sans cérémonie du processus et éventuellement une tentative par le système d'exploitation de le redémarrer. ( Edita: La JVM/Dalvik VM 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 la plupart du travail dans cette application (toute la logique du jeu) et bien qu'il soit bien testé sur de nombreuses autres plateformes, il est tout à fait possible que, dans mon portage Android, je le nourrisse de déchets et provoque un crash dans le code natif, donc je veux les crash dumps (à la fois natif et Java) qui apparaissent actuellement dans le log Android (je suppose que ce serait stderr dans une situation non-androïde). Je suis libre de modifier arbitrairement le code C et Java, bien que les callbacks (entrant et sortant de JNI) soient au nombre d'environ 40 et, évidemment, des points bonus pour les petites différences.
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-là sur Android, cela résoudrait la partie capture de ma question, mais je ne vois pas de bibliothèque de ce type pour Android/Dalvik.