【问题标题】:Generate core dump in android在android中生成核心转储
【发布时间】:2011-09-05 09:27:49
【问题描述】:

我正在使用一些共享开发一个 android 的应用程序 由我编写并使用 ndk-r5b 编译的库。该应用程序有效, y 并且对库的调用也有效,但我检测到一些错误, 分段错误,我需要调试它,但是,我不知道如何调试 来自android的本机代码,我不知道是否可以生成核心转储, 就像在 linux 中一样,用于调试我的库。

有什么想法吗?

【问题讨论】:

    标签: android debugging android-ndk coredump


    【解决方案1】:

    ndk 带有 ndk-gdb,据说它允许您调试本机应用程序。另外,如果你下载整个安卓开源项目,他们也有一些用于调试的 gdb 版本。查看 ndk 的 docs/ 文件夹以了解如何使用它。本教程也可能很有帮助:http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/

    但是,正如我最近提出的一个问题所示:Running ndk-gdb with package not found error on motorola phone 我仍然无法让它工作。

    编辑:您在 cmets 中说您使用的是三星设备:三星决定破坏本机调试所需的一些关键内部结构,但如果您拥有设备的 root 访问权限,则很容易修复。如果您使用 --verbose 标志,您可能会发现错误与此不同,即包未知错误。那是因为它在 /data/system/packages.list 中查找,但三星将该文件重命名为 /dbdata/system/packages.list。因此,如果您在 /data/system/packages.list 中创建指向该文件的符号链接,(需要 root 访问权限)它应该可以工作。或者至少声称 ndk 邮件列表:http://osdir.com/ml/android-ndk/2011-03/msg00036.html

    【讨论】:

    • 谢谢 Leif,我知道 ndk-gdb 存在,但我总是遇到同样的错误...“也无法设置网络重定向到 gbdserver?也许使用 --port= 来使用不同的TCP端口可能有帮助吗?”......我无法解决它。我在三星标签 GT p1000 上调试
    • 啊,好吧。三星决定破坏本机调试所需的一些关键内部结构,但如果您拥有设备的 root 访问权限,它很容易修复。如果您使用 --verbose 标志,您可能会发现错误与此不同,即包未知错误。那是因为它在 /data/system/packages.list 中查找,但三星将该文件重命名为 /dbdata/system/packages.list。因此,如果您在 /data/system/packages.list 中为该文件创建符号链接,(需要 root 访问权限)它应该工作。
    • 我想我从这里得到答案:osdir.com/ml/android-ndk/2011-03/msg00036.html
    • 我还添加了这个作为答案的一部分。
    • 制作符号链接非常简单。首先,将您的 adb.exe 定位到您的 sdk 目录中,然后在 shell 中写入“/SDK_DIR/adb.exe shell”。这样你就进入了你的设备,然后写“su”来输入超级用户的方式,最后是“ln -s /dbdata/system/packages.list /data/system/packages.list”。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2013-07-24
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多