আমি কিভাবে লাইব্রেরি লোডিং ট্রেস করব?


16

আমার কাছে এমন একটি প্রোগ্রাম রয়েছে যা লাইব্রোস্ট 1.67 এর সাথে লিঙ্কিত লাইব্রেরির উপর নির্ভর করে যা সিস্টেমে ইনস্টল করা আছে। আমি যখন এটি চালু করি তখন আমার একটি ত্রুটি রয়েছে যা libboost_system.so.1.58বিদ্যমান নেই। LD_PRELOADএবং LD_LIBRARY_PATHআনসেট করা হয়।

lddtreeসম্পাদনা এই লাইব্রেরিটিকে নির্ভরতা হিসাবে দেখায় না তবে lddকরে।

লাইব্রেরিটি যেখানে প্রয়োজন সেখানে থেকে আমি কীভাবে ট্রেস করব?

উত্তর:


16

যদি কোনও জিএনইউ সিস্টেমে থাকে তবে আপনার অ্যাপ্লিকেশনটি চালিয়ে চেষ্টা করুন:

LD_DEBUG=libs your-application

দেখুন LD_DEBUG=helpআরও বিকল্প বা man ld.so


যখন আমি tcsh এ LD_DEBUG = libs পাইথন 3.6 এ চেষ্টা করি তখন আমি LD_DEBUG কমান্ড খুঁজে পাইনি। টিসিএস বিকল্প কি?
গানসুব

1
@gansub প্রেফিক্স সহ কমান্ড envtcsh শেল মধ্যে
Stéphane Chazelas

6

প্রোগ্রামটি যদি llben () ব্যবহার করে libboost_s সিস্টেমে ম্যানুয়ালি লোড হচ্ছে, আপনি সম্ভবত এটি কোথায় এটি করছেন তা সন্ধান করতে সক্ষম হবেন যে ltrace ব্যবহার করে এটি dlopen () কল করছে কিনা তা দেখতে, এবং gdb dlopen () এর কলগুলিতে ব্রেক ব্রেকপয়েন্ট সেট করতে এবং তারপরে একটি স্ট্যাক ব্যাকট্রেস উত্পাদন। ( ল্যাট্রেসও দেখুন ))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.