2011-05-31 97 views
9

我正在开发一个android的应用程序,使用我编写的一些共享的 库,并使用ndk-r5b编译。该应用程序工作, y和调用库的作品,但我检测到一些错误, 分割错误,我需要调试它,但是,我不知道如何调试 本机代码从android和我不' t知道我是否可以生成核心转储文件, 与linux一样,用于调试我的库。在android中生成核心转储

有什么想法?

回答

5

ndk带有ndk-gdb,它可以让你调试原生应用程序。另外,如果你下载整个andriod开源项目,他们也有一些版本的gdb用于调试。查看ndk的文档/文件夹以了解如何使用它。本教程可能也有帮助: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我仍然无法使它工作。

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

+0

谢谢雷夫,我知道ndk-gdb存在,但我总是得到相同的 错误...“也可能设置网络重定向到gbdserver? 也许使用--port = 使用不同的TCP端口可能 帮助?“...我无法解决它。我正在调试三星 选项卡GT p1000 – Chris 2011-05-31 16:15:27

+0

啊,好的。三星决定破坏本机调试所需的一些关键内部组件,但如果您拥有对设备的root访问权限,则它很容易修复。如果您使用--verbose标志,您可能会发现错误与此不同,包未知错误。这是因为它正在查看/data/system/packages.list,但是samsung已将该文件重命名为/dbdata/system/packages.list。因此,如果您在/data/system/packages.list中创建符号链接(需要root访问权限),那么它应该可以工作。 – 2011-06-01 03:50:41

+0

这里是我想我从那里得到的答案:http://osdir.com/ml/android-ndk/2011-03/msg00036.html – 2011-06-01 03:52:10