我在交叉编译环境中使用gdb,我为目标体系结构构建了一个Linux树,包括许多共享库。
问题:当我分析核心转储时,gdb会找到我的.so文件及其符号的路径,但不会找到它们的源文件。
主机设置:
tree/
< - 构建根目录
tree/apps/myapp/myapp
< - 我崩溃的应用
tree/libs/mysharedlib/
< - 共享库是从这样的路径构建的,并安装在target /
tree/target/
< - 目标构建根
tree/target/usr/bin/
< - 我崩溃的二进制文件在这里
tree/target/lib
< - 某些.so:s
tree/target/usr/lib
< - 还有一些.so:s
示例输出:
...
#9 0x2b038cfc in start_thread (arg=0x32dff4d0) at pthread_create.c:302
302 pthread_create.c: No such file or directory.
in pthread_create.c
...
默认情况下gdb如何知道搜索源文件的位置?
我知道可以在gdb中使用'directory'命令来指定 手动源目录,它的工作原理,但我不想这样做 每个共享库。我想设置构建我所有东西的根。 当我使用gdbserver进行实时调试时,gdb会自动查找所有共享库的源代码,因此我希望核心文件具有相同的行为。
是否只有调试信息中指定的.c文件名 二进制文件还是有路径?相对还是绝对?