我正在尝试使用Eclipse(Kepler)在Windows上调试NDK项目,但GDB将找不到.so文件的符号,因为搜索路径中的斜杠方向不正确.使用NDK r9和SDK 22.2.1,当我尝试运行应用程序时,GDB显示:
警告:无法加载64个库的共享库符号,例如/ system/bin/linker.
使用"info sharedlibrary"命令查看完整列表.
你需要"set solib-search-path"或"set sysroot"吗?警告:无法找到动态链接器断点功能.
GDB将重新进行重试.同时,在dlopen()之后,GDB很可能无法调试共享库初始化程序或解决挂起的断点.
没有加载符号表.使用"file"命令.
没有加载符号表.使用"file"命令.
没有加载符号表.使用"file"命令.
对于我的库中设置的每个断点,"无符号表已加载..."行显示一次.问题似乎是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
Run Code Online (Sandbox Code Playgroud)
如果我然后更新solib-search-path以使用正斜杠,我得到:
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"? …Run Code Online (Sandbox Code Playgroud)