debuggingAndroid NDK原生应用程序

我正在尝试debugging并浏览段落错误的Android应用程序。 我试过ndk-gdb ,但运气不好。 我也提到Android NDKdebugging ,而不能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更less,但我不知道如何设置一个断点,因为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 

我有我相信的debugging符号。

  • ndk-build -BV=1 APP_OPTIM=debug
  • jni/ Android.mk具有LOCAL_CFLAGS := -g
  • ant debug

我也ndk-build NDK_DEBUG=1但我仍然得到它看起来像我没有debugging符号的地方。

这是一个堆栈跟踪的图像。 它没有得到更多的信息:

追溯

Solutions Collecting From Web of "debuggingAndroid NDK原生应用程序"

那么NDK_DEBUG = 1,清单中的可debugging标志设置为true是必需的。 当你构build应用程序时,在你的project / libs / armeabi中,应该有一个gdb.setup文件。 那里有符号searchpath,检查是否有效。 你是否试过这个:

 ndk-gdb --start --verbose --force 

看起来你正在得到一个空指针exception。

在NDK和Eclipse插件的最新版本中,您可以右键单击包并selectdebugging为 – > Android本机应用程序

确保您将本机库加载到可启动活动或Application类中。 否则,它不会工作,你会得到以下错误No symbol table is loaded. Use the "file" command. No symbol table is loaded. Use the "file" command.

例如在Application类中:

 import android.app.Application; public class MyApp extends Application { static { System.loadLibrary("Name"); } public static native int doSomething(); } 

Name是没有lib部分的库(.so文件)的名称。

我解决了将–nowait选项放到shell命令中:

 ndk-gdb --start --verbose --nowait