【问题标题】:Debug Native Code on Motorola Droid在 Motorola Droid 上调试本机代码
【发布时间】:2011-03-28 14:55:37
【问题描述】:

我正在尝试在摩托罗拉 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),则错误是相同的。

【问题讨论】:

  • 我不确定...但是您不需要 Android 2.2 来使用 gdb 进行调试吗?您的 Droid 上是否安装了 Android 2.2?
  • 我不知道,据我所知,gdb 指令/NDK 在 2.2 之前就已经存在。谁能证实这一点?
  • 我认为即使是非“root”设备也可以通过 adb 运行su 以访问特权控制台命令,但我还没有尝试过。如果可行,请告诉我,我会发布正确的答案。
  • @Walter 既不是sudo 也不是su 工作:它们都会导致Permission Denied 错误。还有其他想法吗?

标签: debugging gdb android-ndk


【解决方案1】:

如果您使用的是 r4 NDK,则不必做很多这样的事情。而是:

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

【讨论】:

    【解决方案2】:

    我没有看到对“本地主机”的引用

    gdbserver :5039 --附加 pid

    在您提供的链接中 - 在手机上....您是否转发了端口

    adb 转发 tcp:5039 tcp:5039

    从工作站?

    还有:

    如果找不到任何特殊版本的 gdb,请运行 find prebuilt -name arm-eabi-gdb 在您的源代码树中查找并运行最新版本

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

    【讨论】:

    • 我删除了 localhost 没有运气。我还没有在我的主机上尝试过任何版本的 gdb,因为我无法在设备上启动服务器。
    猜你喜欢
    • 2012-05-31
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2012-09-20
    • 2016-08-02
    • 2020-06-21
    相关资源
    最近更新 更多