मैं डीबग करने और एक एंड्रॉइड एप्लिकेशन के माध्यम से कदम उठाने की कोशिश कर रहा हूं जो segfaults। मैंने ndk-gdb
की कोशिश की है, लेकिन छोटी किस्मत के साथ। मैंने अपने ऐप को डीबग करने में सक्षम होने के बिना Android NDK Debugging भी संदर्भित किया है।एंड्रॉइड एनडीके देशी ऐप्स डिबगिंग
जब मैं ndk-gdb --start
कोशिश, और मैं मिलता है:
$ ndk-gdb --start --verbose
Android NDK installation path: /opt/android-ndk-r7
Using default adb command: /opt/android-sdk-linux/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using final ADB command: '/opt/android-sdk-linux/platform-tools/adb'
Using auto-detected project path: .
Found package name: com.example.native_plasma
ABIs targetted by application: armeabi armeabi-v7a
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi-v7a
Found debuggable flag: true
Found device gdbserver: /data/data/com.example.native_plasma/lib/gdbserver
Using gdb setup init: ./libs/armeabi-v7a/gdb.setup
Using toolchain prefix: /opt/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi-v7a
Found data directory: '/data/data/com.example.native_plasma'
Found first launchable activity: android.app.NativeActivity
Launching activity: com.example.native_plasma/android.app.NativeActivity
## COMMAND: /opt/android-sdk-linux/platform-tools/adb shell am start -n com.example.native_plasma/android.app.NativeActivity
Starting: Intent { cmp=com.example.native_plasma/android.app.NativeActivity }
## COMMAND: /opt/android-sdk-linux/platform-tools/adb shell sleep 2
Found running PID: 0
ERROR: Could not extract PID of application on device/emulator.
Weird, this probably means one of these:
- The installed package does not match your current manifest.
- The application process was terminated.
Try using the --verbose option and look at its output for details.
यह बताता है कि आवेदन segfaulted अधिक कम है, लेकिन मैं यहाँ एक ब्रेकपाइंट सेट करने के लिए कैसे के बाद से gdb कभी नहीं वास्तव में एक शीघ्र देता है पता नहीं है।
डिबग प्रतीकों$ ../../toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-addr2line -f -e libs/armeabi/libnative-plasma.so
bedb2330
??
??:0
मेरे पास मेरा मानना है कि:
मैं भी इस आदेश की कोशिश की।
ndk-build -B V=1 APP_OPTIM=debug
Android.mk
jni/
मेंLOCAL_CFLAGS := -g
ant debug
है मैं भी है ndk-build NDK_DEBUG=1
लेकिन मैं अभी भी मिल जहां यह है कि मैं डिबग प्रतीकों की जरूरत नहीं है लग रहा है।
यहां स्टैक ट्रेस की एक छवि है। प्रकट सेट में
मैं अगर यह मदद मिलेगी पता नहीं है, लेकिन आप कुछ दस्तावेज़ (यह पुराना हो चुका है, मन के लिए देख रहे हैं , क्योंकि यह एनडीके आर 5 बी के बारे में बात करता है), फिर मैंने कुछ महीने पहले एक गाइड लिखा था कि आप [यहां] (http://www.doc.ic.ac.uk/~cb908/AndroidNDK.html) पा सकते हैं।मुझे डर है कि मैं समस्या पर और अधिक अंतर्दृष्टि प्रदान नहीं कर सकता, केवल उस लॉग में आउटपुट किए गए पैकेज नाम को जांचने के अलावा मैनिफेस्ट में जैसा ही है (लेकिन मुझे लगता है कि यह है, क्योंकि यह डेटा निर्देशिका और सामान मिला है) –
धन्यवाद। ऐसा लगता है कि आपने ग्रहण का उपयोग किया था। मैं कमांड लाइनों का उपयोग कर रहा हूँ। मुझे उम्मीद है कि मुझे ग्रहण का उपयोग करने की ज़रूरत नहीं है। : \ – Scott
आह, हाँ, मैंने इसके बारे में नहीं सोचा था। सिद्धांतों को वही होना चाहिए - जहां तक मुझे पता है कि ग्रहण केवल जीडीबी आउटपुट दिखाता है, और जीडीबी को सही आदेश देता है (उदाहरण के लिए जब आप चरण बटन पर क्लिक करते हैं) - तो नहीं, आपको इसका उपयोग करने की आवश्यकता नहीं है। आप 'LOCAL_CFLAGS' (-O0 मुझे लगता है) में ऑप्टिमाइज़ेशन बंद करने का प्रयास कर सकते हैं, लेकिन मुझे संदेह है कि यह बहुत कुछ करेगा। ऐप में आपका पहला ब्रेकपॉइंट कितना दूर है? –