Tôi đang chuyển một dự án sang Bộ phát triển Android Native mới (tức là JNI) và tôi muốn bắt SIGSEGV, nếu nó xảy ra (có thể cả SIGILL, SIGABRT, SIGFPE) để trình bày một hộp thoại báo cáo sự cố đẹp mắt, thay vì (hoặc trước đó) những gì hiện đang xảy ra: cái chết ngay lập tức của quy trình và có thể một số nỗ lực của hệ điều hành để khởi động lại nó. ( Chỉnh sửa: Máy ảo JVM / Dalvik bắt tín hiệu và ghi lại dấu vết ngăn xếp và thông tin hữu ích khác; tôi chỉ muốn cung cấp cho người dùng tùy chọn gửi email thông tin đó cho tôi thực sự.)
Tình hình là: một phần lớn mã C mà tôi không viết thực hiện hầu hết công việc trong ứng dụng này (tất cả logic trò chơi) và mặc dù nó đã được thử nghiệm tốt trên nhiều nền tảng khác, hoàn toàn có thể xảy ra trường hợp tôi, trong Android của mình cổng, sẽ cung cấp cho nó rác và gây ra sự cố trong mã gốc, vì vậy tôi muốn kết xuất lỗi (cả bản gốc và Java) hiện hiển thị trong nhật ký Android (tôi đoán nó sẽ là stderr trong tình huống không phải Android). Tôi có thể tự do sửa đổi cả mã C và Java một cách tùy ý, mặc dù các lệnh gọi lại (cả đi vào và đi ra khỏi JNI) là khoảng 40 và rõ ràng, điểm thưởng cho các khác biệt nhỏ.
Tôi đã nghe nói về thư viện chuỗi tín hiệu trong J2SE, libjsig.so, và nếu tôi có thể cài đặt một trình xử lý tín hiệu như vậy một cách an toàn trên Android, điều đó sẽ giải quyết được phần bắt câu hỏi của tôi, nhưng tôi không thấy thư viện nào như vậy cho Android / Dalvik .