मैं एक प्रोजेक्ट को नए एंड्रॉइड नेटिव डेवलपमेंट किट (यानी JNI) में स्थानांतरित कर रहा हूं और मैं SIGSEGV को पकड़ना चाहता हूं, क्या यह एक अच्छा रिपोर्टिंग रिपोर्टिंग संवाद पेश करने के लिए (संभवतः SIGILL, SIGABRT, SIGFPE) भी होना चाहिए। (या इससे पहले) वर्तमान में क्या होता है: प्रक्रिया की तत्काल असामयिक मृत्यु और संभवतः इसे पुनः आरंभ करने के लिए ओएस द्वारा कुछ प्रयास। ( संपादित करें: JVM / Dalvik VM सिग्नल को पकड़ता है और एक स्टैक ट्रेस और अन्य उपयोगी जानकारी लॉग करता है; मैं बस उपयोगकर्ता को उस जानकारी को वास्तव में मुझे ईमेल करने का विकल्प प्रदान करना चाहता हूं।)
स्थिति यह है: सी कोड का एक बड़ा निकाय, जो मैंने नहीं लिखा था, इस एप्लिकेशन (गेम के सभी तर्क) में अधिकांश काम करता है और यद्यपि यह कई अन्य प्लेटफार्मों पर अच्छी तरह से परीक्षण किया गया है, यह पूरी तरह से संभव है कि मैं, अपने Android में पोर्ट, इसे कचरा खिलाएगा और मूल कोड में क्रैश का कारण होगा, इसलिए मैं क्रैश डंप (मूल और जावा दोनों) चाहता हूं जो वर्तमान में एंड्रॉइड लॉग में दिखाई देता है (मुझे लगता है कि यह एक गैर-एंड्रॉइड स्थिति में stderr होगा)। मैं सी और जावा कोड दोनों को मनमाने ढंग से संशोधित करने के लिए स्वतंत्र हूं, हालांकि कॉलबैक (दोनों जेएनआई से बाहर आ रहे हैं) संख्या लगभग 40 और जाहिर है, छोटे बिंदुओं के लिए बोनस अंक।
मैंने जे 2 एसई, libjsig.so में सिग्नल चाइनिंग लाइब्रेरी के बारे में सुना है, और अगर मैं एंड्रॉइड पर उस तरह से एक सिग्नल हैंडलर को सुरक्षित रूप से स्थापित कर सकता हूं, तो यह मेरे प्रश्न के पकड़ने वाले हिस्से को हल करेगा, लेकिन मुझे एंड्रॉइड / डेल्विक के लिए ऐसी कोई लाइब्रेरी नहीं दिख रही है ।