分析核心转储时共享库的相对路径

时间:2010-11-17 21:53:08

标签: gdb shared-libraries relative-path coredump

在进行核心分析时是否可以指定共享库的相对路径(我想在编译时指定相对路径而不是调试时间)

(gdb) info sharedlibrary
From                To                  Syms Read   Shared Object Library
0x00007f4433ffef00  0x00007f443402cc08  Yes (*)     /lib/libssl.so.0.9.8
0x00007f44334d6a00  0x00007f44335e9920  Yes         /lib/libc.so.6
0x00007f443423eaf0  0x00007f4434257994  Yes         /lib64/ld-linux-x86-64.so.2
                                        No          ./lib/myplugin.so
                                        No          /opt/lib/mylibc.so
0x00007f443237a190  0x00007f443237d7f8  Yes         /lib/librt.so.1
0x00007f44320f8ef0  0x00007f44321392d8  Yes         /lib/libm.so.6
0x00007f4431ee08b0  0x00007f4431eeffe8  Yes (*)     /lib/libgcc_s.so.1

我将更具体地说明什么以及为什么对我不起作用:

  1. LD_LIBRARY_PATH可以指定相对于当前工作目录的相对路径。这不符合我的需要,因为我需要有关可执行文件位置的相对路径
  2. 带有$ ORIGIN的RPATH旨在成为可执行文件位置的相对路径。但它不符合我的需求,因为当我尝试进行核心分析时,它会扩展到绝对路径。
  3. 那么如何针对可执行文件的位置指定共享库的相对路径?

2 个答案:

答案 0 :(得分:1)

似乎GDB 7.2目前不尊重RPATH。

关于此问题,有两个错误: http://sourceware.org/bugzilla/show_bug.cgi?id=12250 http://sourceware.org/bugzilla/show_bug.cgi?id=12249

答案 1 :(得分:0)

通常,共享库路径在链接期间无关紧要(除非您使用rpath,这会将库路径保留在共享库本身中。)

运行或调试程序时,将在shell变量LD_LIBRARY_PATH/etc/ld.so.conf/etc/ld.so.conf.d/)中设置的路径中搜索共享库。 LD_LIBRARY_PATH的优先级高于ld.so.conf

export LD_LIBRARY_PATH = .. / path / to / my / lib1:/ path2

使用相对路径没问题,它也可以正常工作

Program Library HOWTO