कैसे प्राप्त करें मेरे पास एंड्रॉइड पर सी ++ कोडबेस चल रहा है, और उपयोगकर्ताओं द्वारा भेजी गई क्रैश रिपोर्ट प्राप्त करना चाहते हैं।मूल कोड - फ़ंक्शन कॉल स्टैक (बैकट्रैक) प्रोग्रामेटिक रूप से
मैं ACRA library का उपयोग कर रहा हूं जो जावा कोड के लिए ठीक काम करता है, लेकिन जब मूल कोड में कुछ क्रैश होता है, तो मुझे पर्याप्त जानकारी नहीं मिलती है। असल में मैं देशी फ़ंक्शन कॉल का स्टैक ट्रेस प्राप्त करना चाहता हूं। मुझे पता है कि मेरी प्रक्रिया समाप्त होने के बाद क्रैश जानकारी लॉगकैट में मुद्रित होती है, और मैं एसीआरए को लॉगकैट पढ़ने/भेजने के लिए कॉन्फ़िगर कर सकता हूं। मैंने सिग्नल हैंडलर का उपयोग करके देशी क्रैश का पता लगाने और ACRA द्वारा रिपोर्टिंग के लिए जावा पर वापस कॉल करने के लिए अपना कोड सेट अप किया है। यह भी ठीक काम करता है।
हालांकि इस दृष्टिकोण के साथ बुरा समय है - एसीआरए प्रक्रिया को तोड़ने के दौरान लॉग पढ़ता है, और एंड्रॉइड (बिल्कुल सही नहीं जानता) दुर्घटनाग्रस्त प्रक्रिया पूरी तरह खत्म होने के बाद क्रैक रिपोर्ट को लॉगकैट में लिखता है। तो मुझे ACRA का उपयोग करते समय स्टैक निशान प्राप्त नहीं होते हैं।
तो मैं सी ++ कोड से प्रोग्रामिक रूप से वर्तमान स्टैक ट्रेस को प्रोग्राम करने के लिए एक तरीका ढूंढ रहा हूं, और इस जानकारी को एसीआरए (या शायद अन्य क्रैश रिपोर्टिंग टूल) में खिला सकता हूं।
सभी मैं की जरूरत है इस रिपोर्ट logcat को पत्र लिखा किसी तरह का है:
10-10 08:29:13.868: INFO/DEBUG(1121): #00 pc 0003fc7c /data/data/com.ex.lib/libapp.so
10-10 08:29:13.891: INFO/DEBUG(1121): #04 pc 00016df4 /system/lib/libdvm.so
10-10 08:29:13.891: INFO/DEBUG(1121): #05 pc 00045284 /system/lib/libdvm.so
10-10 08:29:13.899: INFO/DEBUG(1121): #15 pc 00047c56 /system/lib/libdvm.so
10-10 08:29:13.922: INFO/DEBUG(1121): #16 pc 00030e4c /system/lib/libandroid_runtime.so
वहाँ किसी भी तरह से मेरे कोड से स्टैक ट्रेस प्राप्त करने के लिए है?
यह आपके एपीके के भीतर परिभाषित दूसरी गतिविधि हो सकता है - –
स्थापित करने के लिए किसी दूसरे ऐप की आवश्यकता नहीं है, लेकिन इसके लिए READ_LOGS की आवश्यकता होगी, चुड़ैल उपयोगकर्ताओं को कुछ संदेह पैदा कर सकता है – scooterman