Làm cách nào để theo dõi tải thư viện?


16

Tôi có chương trình phụ thuộc vào thư viện được liên kết với libboost 1.67, được cài đặt trong hệ thống. Khi tôi khởi chạy nó, tôi có một lỗi libboost_system.so.1.58không tồn tại. LD_PRELOADLD_LIBRARY_PATHkhông được đặt.

lddtreethực thi không hiển thị thư viện này là phụ thuộc nhưng lddkhông.

Làm thế nào tôi có thể theo dõi từ nơi thư viện được yêu cầu?

Câu trả lời:


16

Nếu trên hệ thống GNU, hãy thử chạy ứng dụng của bạn với:

LD_DEBUG=libs your-application

Xem LD_DEBUG=helpđể có thêm lựa chọn hoặc man ld.so.


Khi tôi thử LD_DEBUG = libs python3.6 trên tcsh, tôi không tìm thấy lệnh LD_DEBUG. Sự thay thế tcsh là gì?
gansub

1
@gansub tiền tố lệnh với envtrong tcsh
Stéphane Chazelas

6

Nếu chương trình đang tải libboost_system theo cách thủ công bằng cách sử dụng dlopen (), bạn có thể tìm thấy nơi nó đang thực hiện bằng cách sử dụng ltrace để xem liệu nó có gọi dlopen () không, và có thể gdb để đặt điểm dừng cho các cuộc gọi đến dlopen () và sau đó tạo ra một backtrace ngăn xếp. (Xem thêm latrace .)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.