ฉันจะติดตามการโหลดห้องสมุดได้อย่างไร


16

ฉันมีโปรแกรมที่ขึ้นอยู่กับไลบรารีที่เชื่อมโยงกับ libboost 1.67 ซึ่งติดตั้งในระบบ เมื่อฉันเปิดใช้ฉันมีข้อผิดพลาดที่libboost_system.so.1.58ไม่มีอยู่ LD_PRELOADและLD_LIBRARY_PATHไม่มีการตั้งค่า

lddtreeการดำเนินการไม่แสดงไลบรารีนี้เป็นการพึ่งพา แต่lddทำ

ฉันจะติดตามจากที่ที่ต้องการไลบรารีได้อย่างไร

คำตอบ:


16

หากใช้ระบบ GNU ให้ลองเรียกใช้แอปพลิเคชันของคุณด้วย:

LD_DEBUG=libs your-application

ดูสำหรับตัวเลือกเพิ่มเติมหรือLD_DEBUG=helpman ld.so


เมื่อฉันลอง LD_DEBUG = libs python3.6 บน tcsh ฉันไม่พบคำสั่ง LD_DEBUG ทางเลือก tcsh คืออะไร?
gansub

1
@gansub นำหน้าคำสั่งด้วยenvin tcsh
Stéphane Chazelas

6

หากโปรแกรมกำลังโหลด libboost_system ด้วยตนเองโดยใช้ dlopen () คุณอาจสามารถค้นหาตำแหน่งที่ใช้ltraceเพื่อดูว่ากำลังเรียก dlopen () และอาจ gdb เพื่อตั้งค่าเบรกพอยต์บนการเรียกไปยัง dlopen () สร้าง backtrace สแต็ก (ดูเพิ่มเติมที่latrace )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.