প্রদত্ত প্রোগ্রামটি জিএনইউ জিপিআরএফ ইনস্ট্রুমেন্টের সাথে সংকলিত হয়েছে কিনা তা পরীক্ষা করা সম্ভব, অর্থাত্ '-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
প্রোগ্রামটি স্বাভাবিকভাবে প্রস্থান করলেই আউটপুট উত্পন্ন হয়। স্ট্যাকওভারফ্লো লিঙ্ক