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