如何跟踪库加载?


16

我有依赖于链接到libboost 1.67(已安装在系统中)的库的程序。启动它时,出现了一个libboost_system.so.1.58不存在的错误。LD_PRELOADLD_LIBRARY_PATH没有设置。

lddtree执行不会将此库显示为依赖项,但是ldd会显示。

如何从需要该库的位置进行跟踪?

Answers:


16

如果在GNU系统上,请尝试使用以下命令运行您的应用程序:

LD_DEBUG=libs your-application

请参阅LD_DEBUG=help以获取更多选项或man ld.so


当我在tcsh上尝试LD_DEBUG = libs python3.6时,找不到LD_DEBUG命令。什么是tcsh替代品?
甘苏布'19

1
@gansub前缀的命令env中的tcsh
斯特凡Chazelas

6

如果程序正在使用dlopen()手动加载libboost_system,则可以使用ltrace来查看其是否在调用dlopen(),甚至可以通过gdb在调用dlopen()时设置断点,然后再查找生成堆栈回溯。(另请参见latrace。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.