Przenoszę projekt do nowego zestawu Android Native Development Kit (tj. JNI) i chciałbym złapać SIGSEGV, gdyby to się stało (prawdopodobnie również SIGILL, SIGABRT, SIGFPE), aby przedstawić ładne okno dialogowe raportowania awarii, zamiast (lub wcześniej) co się obecnie dzieje: natychmiastowa bezceremonialna śmierć procesu i prawdopodobnie próba ponownego uruchomienia go przez system operacyjny. ( Edycja: maszyna wirtualna JVM / Dalvik przechwytuje sygnał i rejestruje ślad stosu i inne przydatne informacje; chcę tylko zaoferować użytkownikowi opcję wysłania tych informacji e-mailem).
Sytuacja jest taka: duża część kodu C, którego nie napisałem, wykonuje większość pracy w tej aplikacji (cała logika gry) i chociaż jest dobrze przetestowany na wielu innych platformach, jest całkowicie możliwe, że ja w moim Androidzie port, prześle go do śmieci i spowoduje awarię w kodzie natywnym, więc chcę, aby zrzuty awaryjne (zarówno natywne, jak i Java), które są obecnie wyświetlane w dzienniku Androida (myślę, że byłby to stderr w sytuacji innej niż Android). Mogę dowolnie modyfikować zarówno kod C, jak i Java, chociaż wywołania zwrotne (zarówno wchodzące, jak i wychodzące z JNI) mają około 40 i oczywiście punkty bonusowe za małe różnice.
Słyszałem o bibliotece łańcuchów sygnałów w J2SE, libjsig.so, i gdybym mógł bezpiecznie zainstalować taką obsługę sygnału w systemie Android, rozwiązałoby to chwytliwą część mojego pytania, ale nie widzę takiej biblioteki dla Androida / Dalvik .