debugging - 在摩托罗拉 Droid 上调试 native 代码

标签 debugging gdb android-ndk

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

gdbserver :5039 --attach 1082

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

提前致谢!

编辑 我已确认此命令适用于模拟器。这可以在没有开启Root的设备上完成吗?

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

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

最佳答案

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

  • 在 ApplicationManifest.xml 的应用程序节点中添加 android:debuggable="true"
  • 对于任何原生(使用 NDK 构建)库,在构建它们之前重复 #1(在构建 ndk-build 复制 gdbserver 和 gdb.setup 文件的位置时,您应该注意一些额外的信息)
  • 使用您想要的选项启动 $NDK_ROOT/ndk-gdb(例如:我通常在点击 native 代码之前在 Eclipse 中中断,然后使用 -E 选项附加)
  • 关于debugging - 在摩托罗拉 Droid 上调试 native 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462692/

    相关文章:

    gdb - 可以在GDB中运行,但直接运行时出现段错误

    android - 如何将现有的 .so 库添加到 Android Studio 项目中?

    c++ - 尝试在Visual Studio 2012中编译时,符号加载错误

    c# - DateTime 问题 - 值在对象外部可用但在对象内部不可用

    windows - Qt creator Debug模式真的很慢

    java - 在android中使用JNI对 'multiply'的 undefined reference

    android - ndk-build 在构建大型项目时卡住/挂起

    node.js - 调试nodejs应用程序生成的核心文件

    c - 为什么 GDB 在行之间不可预测地跳转并将变量打印为 "<value optimized out>"?

    c++ - Python 异常 : index out of range while debuging the code c++ with support for STL with gdb