在Motorola Droid上调试本机代码

时间:2010-08-11 20:47:44

标签: debugging gdb android-ndk

我正在尝试使用Motorola Droid上的NDK调试应用程序构建。我正按照here的说明进行操作,过去我在模拟器上取得了成功(显然我有root访问权限)但是当我尝试启动时

gdbserver :5039 --attach 1082

通过adb shell,我得到一个gdbserver:permission denied。显然,因为这是一个股票Droid,我没有root访问权限。这有必要吗?我只是错过了一些东西吗?

提前致谢!

编辑我已确认此命令适用于模拟器。这可以在非根设备上完成吗?

编辑2 我还确认了EVO 4G上的Permission Denied错误。

编辑3 我还发现生产设备(例如EVO 4G或Droid)不会给我一个“未找到”的错误。例如,当我在shell中输入ljs之类的随机内容时,我得到ljs: permission denied。如果命令存在且我无法访问它(sudo - 大概)或者命令不存在(ljs),则错误是相同的。

2 个答案:

答案 0 :(得分:2)

如果您使用的是r4 NDK,则不必进行大量此操作。代替:

  1. 在ApplicationManifest.xml的应用程序节点中添加android:debuggable =“true”
  2. 对于任何本机(使用NDK构建)库,在构建它们之前重复#1(在构建ndk-build复制gdbserver和gdb.setup文件的位置时应注意一些额外的信息)
  3. 使用您想要的选项启动$ NDK_ROOT / ndk-gdb(例如:我常常在Eclipse中断,然后点击本机代码,然后使用-E选项附加)

答案 1 :(得分:1)

根据

,我看不到对'localhost'的引用
gdbserver :5039 --attach pid

在你给出的链接中 - 就在手机上......你转发了端口

adb forward tcp:5039 tcp:5039

来自工作站?

此外:

If you can't find either special version of gdb, run find prebuilt -name 
arm-eabi-gdb in your source tree to find and run the latest version

您是否尝试使用'arm-eabi-gdb'代替,将上述gdb替换为显式版本....?