Я перемещаю проект в новый Android Native Development Kit (например, JNI), и я хотел бы поймать SIGSEGV, если это произойдет (возможно, также SIGILL, SIGABRT, SIGFPE), чтобы представить красивый диалог отчета о сбоях вместо (или раньше) то, что происходит в настоящее время: немедленная бесцеремонная смерть процесса и, возможно, некоторая попытка ОС перезапустить его. ( Изменить: виртуальная машина JVM / Dalvik улавливает сигнал и регистрирует трассировку стека и другую полезную информацию; я просто хочу предложить пользователю возможность отправить мне эту информацию по электронной почте.)
Ситуация такова: большая часть кода C, который я не писал, выполняет большую часть работы в этом приложении (всю логику игры), и, хотя он хорошо протестирован на многих других платформах, вполне возможно, что я в моем Android port, будет кормить его мусором и вызвать сбой в собственном коде, поэтому мне нужны аварийные дампы (как собственные, так и Java), которые в настоящее время отображаются в журнале Android (я думаю, что это будет stderr в ситуации, отличной от Android). Я могу произвольно изменять код C и Java, хотя количество обратных вызовов (как входящих, так и исходящих из JNI) составляет около 40 и, очевидно, бонусные баллы за небольшие различия.
Я слышал о библиотеке цепочки сигналов в J2SE, libjsig.so, и если бы я мог безопасно установить такой обработчик сигналов на Android, это решило бы захватывающую часть моего вопроса, но я не вижу такой библиотеки для Android / Dalvik .