Eclipse Windows上使用不正确斜杠的Android NDK solib搜索路径

Eclipse Windows上使用不正确斜杠的Android NDK solib搜索路径,eclipse,android-ndk,gdb,Eclipse,Android Ndk,Gdb,我试图使用Eclipse(开普勒)在Windows上调试NDK项目,但GDB找不到.so文件的符号,因为搜索路径中斜杠的方向不正确。使用NDK r9和SDK 22.2.1,当我尝试运行应用程序时,GDB显示: 警告:无法加载64个库的共享库符号,例如/system/bin/linker 使用“info sharedlibrary”命令查看完整的列表 您需要“设置solib搜索路径”还是“设置系统根”? 警告:找不到动态链接器断点函数 GDB将最终重试。同时,在dlopen()之后,GDB可能无法

我试图使用Eclipse(开普勒)在Windows上调试NDK项目,但GDB找不到.so文件的符号,因为搜索路径中斜杠的方向不正确。使用NDK r9和SDK 22.2.1,当我尝试运行应用程序时,GDB显示:

警告:无法加载64个库的共享库符号,例如/system/bin/linker

使用“info sharedlibrary”命令查看完整的列表

您需要“设置solib搜索路径”还是“设置系统根”? 警告:找不到动态链接器断点函数

GDB将最终重试。同时,在dlopen()之后,GDB可能无法调试共享库初始值设定项或解决挂起的断点

未加载任何符号表。使用“文件”命令

未加载任何符号表。使用“文件”命令

未加载任何符号表。使用“文件”命令

对于我的库中设置的每个断点,“未加载符号表…”行显示一次。问题似乎是GDB找不到未压缩的.so文件,因为搜索路径包含反斜杠而不是正斜杠。如果我暂停程序并执行以下GDB命令,这就是我得到的输出:

show solib-search-path

The search path for loading non-absolute shared library symbol files is C:\\Users\\Username\\Projects\\Project\\Android/obj/local/armeabi-v7a/.

info shared

From        To          Syms Read   Shared Object Library
0x4003fff0  0x4006db40  Yes         C:/Users/Username/Projects/Project/Android/obj/local/armeabi-v7a/libc.so
0x5bda8598  0x5bf5aa50  No          C:/Users/Username/Projects/Project/Android/obj/local/armeabi-v7a/libProject.so
如果我随后更新solib搜索路径以使用前斜杠,我会得到以下结果:

set solib-search-path C:/Users/Username/Projects/Project/Android/obj/local/armeabi-v7a/
warning: Could not load shared library symbols for 74 libraries, e.g. /system/bin/linker.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
warning: Unable to find dynamic linker breakpoint function.
GDB will retry eventurally.  Meanwhile, it is likely
that GDB is unable to debug shared library initializers
or resolve pending breakpoints after dlopen().

info shared
From        To          Syms Read   Shared Object Library
0x4003fff0  0x4006db40  Yes         C:/Users/Username/Projects/Project/Android/obj/local/armeabi-v7a/libc.so
0x5bda8598  0x5bf5aa50  Yes         C:/Users/Username/Projects/Project/Android/obj/local/armeabi-v7a/libProject.so
在此之后,GDB将成功命中本机代码中的断点。libs\armeabi-v7a文件夹中的gdb.setup文件有以下行:

set solib-search-path ./obj/local/armeabi-v7a

但我不确定这条路径在哪里变成了绝对路径。我猜就是在这一点上,GDB使用带反斜杠的路径而不是带正斜杠的路径,但我不确定在哪里会发生这种情况。我确实尝试过修改创建gdb.setup文件的Android NDK构建脚本,甚至尝试过输入不同的路径,但是show solib search path的输出是一样的,所以我甚至不确定gdb是否使用了该搜索路径。以前有没有人遇到过这个问题,或者有没有人知道当我从Eclipse运行时,如何让GDB以正确的搜索路径启动?

我想这可能是因为GDB在以后才加载符号。在加载项目之前我确实有一个延迟。所以,允许GDB有时间连接。我将延迟时间移到调用loadLibrary之后,现在它似乎可以很好地接收符号