代码之家  ›  专栏  ›  技术社区  ›  Chris Thompson

在摩托罗拉Droid上调试本机代码

  •  5
  • Chris Thompson  · 技术社区  · 14 年前

    我正在尝试用摩托罗拉Droid上的ndk调试应用程序构建。我按照指示行事 here 过去我在模拟器上取得了成功(很明显我有根访问权),但是当我尝试开始时

    gdbserver :5039 --attach 1082
    

    通过亚行的外壳,我得到了 gdbserver:permission denied . 显然,因为这是一个库存机器人,我没有根访问权。有必要吗?我只是错过了什么吗?

    提前谢谢!

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

    编辑2 我也证实了这一点 Permission Denied EVO 4G上的错误。

    编辑3 我还发现生产设备(如EVO4G或Droid)不会给我一个“找不到”的错误。例如,当我随机输入 ljs 在贝壳,我得到 ljs: permission denied . 如果命令存在并且我无法访问它(sudo-大概),或者如果命令不存在(ljs),则错误是相同的。

    2 回复  |  直到 14 年前
        1
  •  2
  •   NuSkooler    14 年前

    如果你使用的是R4 NDK,你不需要做很多。而是:

    1. 在applicationmanifest.xml的应用程序节点中添加android:debuggable=“true”
    2. 对于任何本机(用ndk构建)库,在构建它们之前重复1(在构建ndk构建复制gdbserver和gdb.setup文件的位置时,您应该注意额外的信息)
    3. 使用您所需的选项启动$ndk_root/ndk gdb(例如:我通常在点击本机代码之前中断Eclipse,然后使用-e选项附加)
        2
  •  1
  •   t0mm13b    14 年前

    我看不到“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替换为显式版本….?