Debugging 在Motorola Droid上调试本机代码

Debugging 在Motorola Droid上调试本机代码,debugging,gdb,android-ndk,Debugging,Gdb,Android Ndk,我正在试着在MotorolaDroid上用NDK调试一个应用程序构建。我正在按照说明进行操作,过去我在模拟器上获得了成功(显然我有root访问权限),但是当我尝试启动时 gdbserver :5039 --attach 1082 通过adb shell,我得到了一个gdbserver:permission denied。显然,由于这是一个库存机器人,我没有根访问权限。有必要吗?我是不是错过了什么 提前谢谢 编辑我已确认此命令在模拟器上有效。这可以在非根设备上完成吗 编辑2我还确认了EVO 4G

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

gdbserver :5039 --attach 1082
通过adb shell,我得到了一个
gdbserver:permission denied
。显然,由于这是一个库存机器人,我没有根访问权限。有必要吗?我是不是错过了什么

提前谢谢

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

编辑2我还确认了EVO 4G上相同的
权限被拒绝
错误


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

根据

gdbserver :5039 --attach pid gdbserver:5039--附加pid 在你给出的链接中-手机上的链接中…你转发了端口了吗

adb forward tcp:5039 tcp:5039 adb转发tcp:5039 tcp:5039 从工作站

此外:

如果找不到任何一个特殊版本的gdb,请运行find prebuild-name 在源代码树中配置eabi gdb以查找并运行最新版本
您是否尝试过使用“arm eabi gdb”,将上述gdb替换为显式版本?

如果您使用的是r4 NDK,您不必做很多这类工作。相反:

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

  • 我没有运气就删除了
    localhost
    。我没有在我的主机上尝试过任何版本的gdb,因为我无法在设备上启动服务器。我不确定…但是你不需要Android 2.2来调试gdb吗?你的Droid上有Android 2.2吗?我没有,而且据我记忆所及,gdb指令/NDK在2.2之前就已经存在了。有人能证实这一点吗?我认为即使是非“根”设备也可以通过adb运行
    su
    来访问特权控制台命令,但我还没有尝试过。如果有效,请告诉我,我会给出正确的答案。@Walter无论是
    sudo
    还是
    su
    都不起作用:它们都会导致
    权限被拒绝
    错误。还有其他想法吗? 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