2011-11-25 55 views
11

我正在尝试将ndk-gdb附加到我的Android应用程序。无法将ndk-gdb附加到Android应用程序

我使用的是Android-ndk-r6b,设备是Android 2.3,Samsung Galaxy S II。

我跟着这个例子Click here for the example

而且我也试图与一个应用程序,当我试图附加GDB与其他应用程序,但详细的显示出它总是越来越重视到第一应用程序本身的所有步骤

Found package name: <1st attached package name> 

我尝试使用这个命令首次推出ndk-gdb

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

我试图连接到另一个应用程序使用下面的命令,但没能成功:

ndk-gdb --launch=com.example.hellogdbserver.HelloGdbServer --force --verbose 

我总是提示以下错误:与第一个应用程序:

ERROR: Non-debuggable application installed on the target device.Please re-install the debuggable version! 

这完全是外壳的日志我我越来越

sh-4.1$ ndk-gdb --verbose --start --force 
    Android NDK installation path: /cygdrive/c/Android/android-ndk 
    Using default adb command: /cygdrive/c/Android/android-sdk-windows/platform-tools/adb 
    ADB version found: Android Debug Bridge version 1.0.26 
    Using final ADB command: '/cygdrive/c/Android/android-sdk-windows/platform-tools/adb' 
    Using auto-detected project path: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver 
    Found package name: com.example.hellogdbserver 
    ABIs targetted by application: armeabi 
    Device API Level: 10 
    Device CPU ABIs: armeabi-v7a armeabi 
    Compatible device ABI: armeabi 
    Found debuggable flag: true 
    Found device gdbserver: /data/data/com.example.hellogdbserver/lib/gdbserver 
    Using gdb setup init: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver/libs/armeabi/gdb.setup 
    Using toolchain prefix: /cygdrive/c/Android/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi- 
    Using app out directory: /cygdrive/d/EclipseTestWorkspace/hello-gdbserver/obj/local/armeabi 
    ERROR: Could not extract package's data directory. Are you sure that 
      your installed application is debuggable? 
    sh-4.1$ 

请让我知道如何解决上述错误,以及如何附加到新的软件包。

我的手机没有植根。希望这不会影响gdb。

这也没有帮助Link to similar problem。由于我的手机是新手机,没有任何应用程序,除了目前正在开发的应用程序。 (仅与三星手机一起去包都存在。没有应用程序是从市场下载。)

感谢&问候,
SSuman185


请通过链接Debugging native code in android app using the android ndk gdb

+0

看到我的三星注入相同。你有没有找到解决办法? – Androider

+0

您是否尝试过在清单中设置 android:debuggable =“true”>? – Lennart

+0

是的,我已经把这个标志设置为true - Suman

回答

5

请首先确保您正在构建应用程序的可调试版本。 AndroidManifest.xml文件应该包含android:debuggable =“true”标签。

你也可以通过在bin目录中找到APK文件来检查它,解压它(它只是一个重命名的ZIP文件)并确保lib \ armeabi文件夹包含gdbserver文件。

如果上述两个条件都满足,尝试手动在设备上安装该软件包:

<android-sdk>\platform-tools\adb.exe install -r <your-package-file.APK> 

请仔细观察adb.exe的输出。如果显示错误,它可能会解释您的问题。

+0

我没有看到adbserver文件在我的lib/armeabi文件夹中。我正在设置android:debuggable =“true”,并且正在运行ndk-build NDK_DEBUG = 1,并且我在Application.mk中设置了APP_OPTIM:= debug。关于如何确保adbserver被编译并插入到armeabi文件夹中,您有什么建议吗? –

6

如果您尝试调试库项目,则会出现此问题。 ndk-gdb无法附加到不是“主”的项目。

您必须将您的jni代码放入启动的应用程序项目中。

3

请确保您有APP_OPTIM在JNI/Application.mk组调试

+1

那个标志是做什么的?它与NDK_DEBUG = 1不同吗? –

相关问题