我有一個C++ Android應用程序,我試圖用ndk-gdb進行調試。應用程序確實使用多線程,但據推測ndk的r5支持多線程。另外,我甚至沒有達到gdb啓動的地步。我運行命令:在摩托羅拉手機上運行ndk-gdb包未找到錯誤
ndk-gdb --start --force --verbose
然後,它找到了針對NDK和SDK(或至少ADB)正確的路徑,和所需的ABI和諸如此類的東西。
$ ndk-gdb --start --force --verbose
Android NDK installation path: /home/leif/eclipse/android-ndk-r5b
Using default adb command: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.26
Using final ADB command: '/home/leif/eclipse/android-sdk-linux_86/platform-tools/adb'
Using auto-detected project path: .
Found package name: net.leifandersen.mobile.android.marblemachine
ABIs targetted by application: armeabi
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
然後查找gdb服務器,並找到它,包括正確的PID,然後開始活動。
但後來,它告訴我,該包不能被發現:
Setup network redirection
## COMMAND: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb shell run-as <package name> lib/gdbserver +debug-socket --attach 16040
## COMMAND: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb forward tcp:5039 localfilesystem:run-as: Package '<package name>' is unknown/debug-socket
然後吐出來,如果你使用不當ADB(幫助文件),你會得到什麼,依次爲:
ERROR: Could not setup network redirection to gdbserver?
Maybe using --port=<port> to use a different TCP port might help?
run-as: Package '<package name>' is unknown
我看着/data/system/packages.list,是的,我的apk肯定是在那裏的,它指向的位置在文件系統上是正確的。所以這不是問題。
本教程:http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/建議刪除並重新安裝,以及清潔你的eclipse構建。
我沒有使用eclipse來構建包,但是我確實清理了所有東西,從頭開始編譯,刪除並重新安裝到沒有運氣。
有沒有人有類似的問題,你是如何解決他們?謝謝。
編輯:哦,我已經嘗試了一個不同的端口無濟於事,似乎沒有任何5039(默認端口)上的任何東西。而afaik,我沒有任何防火牆阻止該連接。我也在Ubuntu 11.04上開發。
EDIT2:嗯...這看起來像新的NDK(R 5 C),錯誤消息已經改變過:
ERROR: Could not extract package's data directory. Are you sure that
your installed application is debuggable?
是的,可調試設置爲true在清單,和所有本機代碼與構建:
LOCAL_CFLAGS := -Wall -g
LOCAL_LDFLAGS := -Wl,-Map,xxx.map
'$ adb shell run-as net.leifandersen.mobile.android.marblemachine ls'是否有效? – 2011-06-08 02:57:22
不,我得到:run-as:Package'net.leifandersen.mobile.android.marblemachine'是未知的,同樣,它看起來像這樣的事情的錯誤報告,但該包不是三級深:http://code.google.com/p/android/issues/detail?id=13965。另外,正如我所說的,該軟件包仍列在/data/system/packages.list中。 – 2011-06-08 04:45:25