首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个so库的ndk-gdb

具有多个so库的ndk-gdb
EN

Stack Overflow用户
提问于 2010-09-09 16:44:57
回答 1查看 4.8K关注 0票数 7

我从Android NDK r4了解到了"ndk-gdb“这个调试工具。现在,我可以开始调试hello-jni示例(尽管存在一些问题)。

但是,对于我自己的Android应用程序,我有几个so库可以使用,它们是从大量的c/c++文件构建的。我曾经使用ndk-build构建这些so文件,然后将这些so文件复制到$PROJECT/libs目录下,无需调试即可正常工作。但是现在我想用ndk-gdb调试一个库。当我启动ndk-gdb时,它报告没有加载符号表。

我还将所有这些so文件复制到$PROJECT/bin/ndk/local/armeabi(似乎是gdb尝试加载符号表的默认目录)。尽管如此,它还是不能工作。

也许ndk-gdb在我复制so文件后不能跟踪它们?或者为什么它不能加载任何符号表,即使我在$PROJECT/bin/ndk/local/armeabi下复制了符号表?

以前有没有人遇到过这个问题?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-25 13:56:08

我想你把它们复制到错误的文件夹了。旧的NDK将文件复制到bin文件夹;新的NDK将文件复制到obj文件夹,这是指向gdb查找符号的位置。

此外,请确保将预先剥离的.so文件复制到obj文件夹,而不是复制到libs文件夹中的相同文件:作为构建过程的一部分,libs文件夹中的文件已被剥离符号和调试信息。因此,您需要为每个.so文件保留两份副本:一份从libs文件夹安装到Android设备上,另一份从obj文件夹安装,以便GDB从中获取符号。

您可以不将调试文件复制到应用程序树中的obj文件夹,而是将另一个构建目录obj/文件夹添加到gdb的符号搜索路径。ndk-build设置一个文件gdb.setup,其中包含一行以set solib-search-path开头的行。您可以在该行上放置一个冒号分隔的路径,该路径包含您的所有目标obj/local/任何文件夹,然后gdb将找到这些符号。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3675045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档