প্রদত্ত প্রোগ্রামটি জিএনইউ জিপিআরএফ ইনস্ট্রুমেন্টের সাথে সংকলিত হয়েছে কিনা তা পরীক্ষা করা সম্ভব, অর্থাত্ '-pg' পতাকাটি কোনও ফাইল তৈরি করে কিনা তা পরীক্ষা না করেই সংকলক এবং লিংক উভয়কেই দেওয়া হয়েছিল gmon.out?
প্রদত্ত প্রোগ্রামটি জিএনইউ জিপিআরএফ ইনস্ট্রুমেন্টের সাথে সংকলিত হয়েছে কিনা তা পরীক্ষা করা সম্ভব, অর্থাত্ '-pg' পতাকাটি কোনও ফাইল তৈরি করে কিনা তা পরীক্ষা না করেই সংকলক এবং লিংক উভয়কেই দেওয়া হয়েছিল gmon.out?
উত্তর:
আপনি কার্য সম্পাদনের জন্য রেফারেন্সগুলি mcount(বা সম্ভবত _mcountবা প্রোফাইলিং এর প্রয়োগ__mcount অনুসারে ) পরীক্ষা করতে পারেন। কাজ করার জন্য প্রোফাইলিংয়ের জন্য এই ফাংশনটি প্রয়োজনীয়, এবং প্রোফাইলবিহীন বাইনারিগুলির জন্য অনুপস্থিত থাকতে হবে।
কিছুটা এইরকম:
$ readelf -s someprog | egrep "\s(_+)?mcount\b" && echo "Profiling is on for someprog"
উপরোক্তগুলি এখানে একটি দ্রুত পরীক্ষায় কাজ করে।
উত্তরে আরও যুক্ত করা:
উপকরণের জন্য পরীক্ষা করতে, এমকাউন্ট / গমনের জন্য গ্রেপ করুন:
$ readelf -s <binary> | egrep "gmon|mcount"
20: 0000000000401160 63 FUNC GLOBAL DEFAULT 12 __gmon_start__
28: 0000000000000000 0 FUNC GLOBAL DEFAULT UND mcount@GLIBC_2.2.5 (2)
36: 0000000000000000 0 FILE LOCAL DEFAULT ABS gmon-start.c
39: 00000000004011a0 0 FUNC LOCAL DEFAULT 12 call_gmon_start
100: 0000000000401160 63 FUNC GLOBAL DEFAULT 12 __gmon_start__
114: 0000000000000000 0 FUNC GLOBAL DEFAULT UND mcount@@GLIBC_2.2.5
একটি সংকলনের পাশাপাশি -pgপতাকাগুলির সাথে লিঙ্ক করতে gmon.outহবে , অন্যথায় উত্পন্ন হবে না। স্ট্যাকওভারফ্লো লিঙ্ক
আমি দেখতে পেয়েছি যে বাইনারিটিতে আমি জি.আর.আর.ফ.ফ চালাচ্ছি gmon.out, -pgপতাকার সাথে সংকলন / লিঙ্ক সত্ত্বেও কোনও ফাইল তৈরি করে নি । কারণটি - আমি আমার অ্যাপ্লিকেশনটি হত্যা করছিলাম, এটি পরিষ্কার প্রস্থান নয় exit gprofপ্রোগ্রামটি স্বাভাবিকভাবে প্রস্থান করলেই আউটপুট উত্পন্ন হয়। স্ট্যাকওভারফ্লো লিঙ্ক