Ich verschiebe ein Projekt auf das neue Android Native Development Kit (dh JNI) und möchte SIGSEGV abfangen, falls es auftreten sollte (möglicherweise auch SIGILL, SIGABRT, SIGFPE), um stattdessen einen schönen Dialog zur Absturzberichterstattung zu präsentieren (oder vorher) was aktuell passiert: der sofortige, zügellose Tod des Prozesses und möglicherweise ein Versuch des Betriebssystems, ihn neu zu starten. ( Bearbeiten: Die JVM / Dalvik-VM fängt das Signal ab und protokolliert einen Stack-Trace und andere nützliche Informationen. Ich möchte dem Benutzer nur die Möglichkeit bieten, diese Informationen wirklich per E-Mail an mich zu senden.)
Die Situation ist: Ein großer Teil des C-Codes, den ich nicht geschrieben habe, erledigt den größten Teil der Arbeit in dieser Anwendung (die gesamte Spielelogik), und obwohl er auf zahlreichen anderen Plattformen gut getestet wurde, ist es durchaus möglich, dass ich in meinem Android Port, wird es Müll füttern und einen Absturz im nativen Code verursachen, daher möchte ich die Absturz-Dumps (sowohl native als auch Java), die derzeit im Android-Protokoll angezeigt werden (ich denke, es wäre stderr in einer Nicht-Android-Situation). Es steht mir frei, sowohl C- als auch Java-Code willkürlich zu ändern, obwohl die Rückrufe (sowohl beim Ein- als auch beim Verlassen von JNI) etwa 40 betragen und natürlich Bonuspunkte für kleine Unterschiede.
Ich habe von der Signalverkettungsbibliothek in J2SE, libjsig.so, gehört, und wenn ich einen solchen Signalhandler sicher auf Android installieren könnte, würde dies den auffälligen Teil meiner Frage lösen, aber ich sehe keine solche Bibliothek für Android / Dalvik .