ndk-gdb与多个so库

我从Android NDK r4了解了“ndk-gdb”的debugging工具。 现在我可以开始debugginghello-jni示例(尽pipe存在一些问题)。

但是,对于我自己的Android应用程序,我有几个这样的库使用,从大量的C / C ++文件构build。 我曾经使用ndk-build构build这些文件,然后将这些文件复制到$ PROJECT / libs目录下,而且无需debugging就可以正常工作。 但是现在我想用ndk-gdbdebugging一个这样的lib。 当我启动ndk-gdb时,它抱怨没有加载符号表。

我也将所有这些文件复制到$ PROJECT / bin / ndk / local / armeabi(看起来像gdb试图加载符号表的默认目录)。 而且,它仍然不起作用。

也许ndk-gdb在复制之后无法追踪我的文件? 或者为什么它不能加载任何符号表,甚至在我将它们复制到$ PROJECT / bin / ndk / local / armeabi之后?

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

非常感谢!

Solutions Collecting From Web of "ndk-gdb与多个so库"

我想你是复制到错误的文件夹。 较旧的NDK将文件复制到bin文件夹; 新的将它们复制到obj文件夹,这就是它指向gdb来查找符号的地方。

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

你可以,而不是复制debugging文件到您的应用程序树中的obj文件夹,将其他生成目录obj /文件夹添加到gdb的符号searchpath。 ndk-buildbuild立一个文件gdb.setup,其中包含一个以set solib-search-path开头的行。 你可以把冒号分隔的path包含所有目标obj / local /任何文件夹,然后gdb会find符号。