ওএসএক্স-এ কোনও প্রক্রিয়া দ্বারা ভাগ করা লাইব্রেরি কীভাবে সন্ধান করবেন?


2

আমি পাইথন মডিউল হিসাবে একটি ভাগ করা সি লাইব্রেরিটি সংকলন এবং ব্যবহার করার চেষ্টা করছি এবং আমি পর্যবেক্ষণ করছি যে DYLD_LIBRARY_PATHআমার কোডের উপর নির্ভর করে কাজ করে বা এটি কোনও ক্রিপ্টিক ত্রুটির বার্তা দিয়ে ক্র্যাশ হয়ে গেছে।

Jul 24 02:44:44 master 
$ DYLD_LIBRARY_PATH=/opt/local/lib  python -c 'import opengm' 
OKAY

Jul 24 02:45:41 master 
$ DYLD_LIBRARY_PATH= python -c 'import opengm' 
python(86214,0x7fff70ccdcc0) malloc: *** error for object 0x7fff70177500: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap

আমি নিজে পরিদর্শন করা যা লাইব্রেরি মধ্যে সাধারণ চেষ্টা করেছি /usr/libএবং /usr/local/libএবং /opt/local/libকিন্তু আমি ক্র্যাশ কারণ খুঁজে পেতে সক্ষম হয়েছে। সমস্যার কারণ চিহ্নিত করার একটি উপায় হ'ল dylibদুটি প্রক্রিয়া কোন ফাইল ব্যবহার করে তা নির্ধারণ করা হবে? আমি এটি ব্যবহার করে অনুধাবন করতে সক্ষম হইনি opensnoopবা dtrussতবে সম্ভবত আমি সেই সরঞ্জামগুলি ভুল ব্যবহার করছিলাম।

আমি কীভাবে এই ক্রাশের কারণটি সনাক্ত করতে পারি?

অস্বীকৃতি: আমি এই একই প্রশ্নটি 2 দিন আগে এসওতে পোস্ট করেছি , যেখানে এটির কোনও উত্তর এবং কেবল 8 টি মতামত পাওয়া যায় নি।


আস্কিডিফরেন্টে আপনাকে স্বাগতম! দয়া করে ক্রসপোস্ট করবেন না। ভবিষ্যতে, আপনি যদি প্রশ্নগুলি অন্য সাইটে সরিয়ে নিতে চান তবে সামান্য মনোযোগ দেওয়ার জন্য এটি পতাকাঙ্কিত করুন এবং মডারেটরগুলিকে এটি অন্য সাইটে স্থানান্তরিত করতে বলুন।
nohillside

হ্যাঁ, ক্রস পোস্ট সম্পর্কে দুঃখিত।
পুষ্পেন্দ্রে

কোনও উদ্বেগ নেই, আমরা সবাই বেঁচে থাকি এবং শিখি :-)
নোহাইসাইড

উত্তর:


2

আপনি DYLD_PRINT_LIBRARIES=YESপরিবেশে dyldপ্রতিটি ডায়নামিক লাইব্রেরি প্রক্রিয়ায় লোড করে দিতে পারেন তা সেট করতে পারেন :

$ DYLD_PRINT_LIBRARIES=YES /usr/bin/true 
dyld: loaded: /usr/bin/true
dyld: loaded: /usr/lib/libSystem.B.dylib
[ ... snip ... ]
dyld: loaded: /usr/lib/libc++.1.dylib
dyld: loaded: /usr/lib/libDiagnosticMessagesClient.dylib
$

2

একটি প্রোগ্রাম যা দেখায় যে dylibকোনও ফাইল কার্যকর করতে কোন ফাইলগুলি ব্যবহার করা হয়েছে তা হ'ল otool

otool -L /path/to/program

otool শো @rpath/libz.1.dylibএবং @rpath/libpython2.7.dylib। বাকী লাইব্রেরিতে সম্পূর্ণ পথ রয়েছে। সম্ভবত এটির অর্থ হ'ল যদি আমি কোনওভাবেই সংকলিত ডাইলিবে আরপিথটি সঠিকভাবে সেট করি তবে সমস্ত কিছু ঠিক হয়ে যাবে। আপনার উত্তরের জন্য ধন্যবাদ.
পুষ্পেন্দ্রে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.