2011-11-25 44 views
11

Tôi đang cố gắng đính kèm ndk-gdb vào ứng dụng Android của mình.Không thể đính kèm ndk-gdb vào ứng dụng android

Tôi đang sử dụng là Android-ndk-r6b và thiết bị là Android 2.3, Samsung Galaxy S II.

Tôi đi theo tất cả các bước trong ví dụ này Click here for the example

Và tôi cũng đã thử với một ứng dụng, khi tôi đang cố gắng để đính kèm gdb với một ứng dụng khác nhưng hiển thị verbose rằng nó luôn luôn bị gắn liền với ứng dụng đầu tiên bản thân

Found package name: <1st attached package name> 

tôi đã cố gắng để khởi động ndk-gdb sử dụng lệnh này cho lần đầu tiên:

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

Tôi cố gắng để đính kèm vào một ứng dụng khác bằng lệnh dưới đây nhưng không thể thành công:

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

Tôi luôn nhận được lỗi dưới đây với ứng dụng đầu tiên:

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

này xong log vỏ mà tôi đang nhận được

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$ 

Vui lòng cho tôi biết làm cách nào để giải quyết lỗi ở trên và cách đính kèm gói mới.

Điện thoại của tôi không được root. Hy vọng điều này sẽ không ảnh hưởng đến gdb.

Điều này cũng không hữu ích Link to similar problem. Vì điện thoại của tôi là điện thoại mới và không có ứng dụng nào khác ngoài ứng dụng đang phát triển hiện tại. (Chỉ gói mà đi cùng với điện thoại Samsung có mặt. Không có ứng dụng được tải về từ thị trường.)

Cảm ơn & Kính trọng,
SSuman185


Hãy đi qua liên kết Debugging native code in android app using the android ndk gdb

+0

Nhìn thấy tương tự trên Samsung Infuse của tôi. Bạn có tìm thấy giải pháp này không? – Androider

+0

Bạn đã thử đặt android: debuggable = "true"> trong tệp kê khai của mình? – Lennart

+0

Có, tôi đã đặt cờ này thành đúng - <ứng dụng android: biểu tượng = "@ drawable/icon" android: label = "@ string/app_name" android: debuggable = "true"> – Suman

Trả lời

5

Trước tiên, hãy đảm bảo rằng bạn đang xây dựng phiên bản ứng dụng có thể gỡ lỗi. Tệp AndroidManifest.xml phải bao gồm thẻ android: debuggable = "true".

Bạn cũng có thể kiểm tra bằng cách tìm tệp APK trong thư mục bin, giải nén tệp đó (chỉ là tệp ZIP được đổi tên) và đảm bảo rằng thư mục lib \ armeabi chứa tệp gdbserver.

Nếu cả hai điều kiện trên được đáp ứng, hãy thử cài đặt gói trên thiết bị bằng tay:

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

Hãy cẩn thận quan sát đầu ra của adb.exe. Nếu nó hiển thị lỗi, nó có thể giải thích vấn đề của bạn.

+0

Tôi không thấy adbserver trong thư mục lib/armeabi của tôi. Tôi đang thiết lập android: debuggable = "true" và tôi đang chạy ndk-build NDK_DEBUG = 1 và tôi đang thiết lập APP_OPTIM: = debug trong Application.mk. Bạn có bất cứ gợi ý nào về cách đảm bảo adbserver được biên dịch và chèn vào thư mục armeabi không? –

6

Sự cố này sẽ phát sinh nếu bạn cố gắng gỡ lỗi dự án thư viện. ndk-gdb không thể đính kèm vào dự án không phải là dự án "chính".

Bạn phải đặt mã jni của mình vào dự án bắt đầu ứng dụng.

3

chắc chắn rằng bạn có APP_OPTIM trong JNI/Application.mk bộ để gỡ lỗi

+1

lá cờ đó làm gì? Có khác với NDK_DEBUG = 1 không? –

Các vấn đề liên quan