কোনও জিএলএফ বাইনারিটি জিআরফোফ উপকরণের সাহায্যে নির্মিত হয়েছিল তা সনাক্ত করুন?


11

প্রদত্ত প্রোগ্রামটি জিএনইউ জিপিআরএফ ইনস্ট্রুমেন্টের সাথে সংকলিত হয়েছে কিনা তা পরীক্ষা করা সম্ভব, অর্থাত্ '-pg' পতাকাটি কোনও ফাইল তৈরি করে কিনা তা পরীক্ষা না করেই সংকলক এবং লিংক উভয়কেই দেওয়া হয়েছিল gmon.out?

উত্তর:


10

আপনি কার্য সম্পাদনের জন্য রেফারেন্সগুলি mcount(বা সম্ভবত _mcountবা প্রোফাইলিং এর প্রয়োগ__mcount অনুসারে ) পরীক্ষা করতে পারেন। কাজ করার জন্য প্রোফাইলিংয়ের জন্য এই ফাংশনটি প্রয়োজনীয়, এবং প্রোফাইলবিহীন বাইনারিগুলির জন্য অনুপস্থিত থাকতে হবে।

কিছুটা এইরকম:

$ readelf -s someprog | egrep "\s(_+)?mcount\b" && echo "Profiling is on for someprog"

উপরোক্তগুলি এখানে একটি দ্রুত পরীক্ষায় কাজ করে।


2

উপরের উত্তরের নিয়মিত অভিব্যক্তি সবসময় কাজ করে না ... তবে 'রিডেলফ-এস [বাইনারি]' এর আউটপুটে "এমকাউন্ট" এর জন্য গ্রেপিংয়ের সাধারণ ধারণাটি সঠিক, আমার ধারণা


0

উত্তরে আরও যুক্ত করা:

  1. উপকরণের জন্য পরীক্ষা করতে, এমকাউন্ট / গমনের জন্য গ্রেপ করুন:

    $  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    
    
  2. একটি সংকলনের পাশাপাশি -pgপতাকাগুলির সাথে লিঙ্ক করতে gmon.outহবে , অন্যথায় উত্পন্ন হবে না। স্ট্যাকওভারফ্লো লিঙ্ক

  3. আমি দেখতে পেয়েছি যে বাইনারিটিতে আমি জি.আর.আর.ফ.ফ চালাচ্ছি gmon.out, -pgপতাকার সাথে সংকলন / লিঙ্ক সত্ত্বেও কোনও ফাইল তৈরি করে নি । কারণটি - আমি আমার অ্যাপ্লিকেশনটি হত্যা করছিলাম, এটি পরিষ্কার প্রস্থান নয় exit gprofপ্রোগ্রামটি স্বাভাবিকভাবে প্রস্থান করলেই আউটপুট উত্পন্ন হয়। স্ট্যাকওভারফ্লো লিঙ্ক

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