दीवार-घड़ी प्रोफाइलिंग करने के लिए gprof को बदलना बहुत आसान है। केवल 8 को बदलने के लिए वर्ण हैं:
ITIMER_PROF -> ITIMER_REAL
SIGPROF -> SIGALRM
फ़ाइल
glibc/sysdeps/posix/profil.c
में
, __profil
कार्य करते है, setitimer
और sigaction
(अधिक सटीक __Setitimer
और __sigaction
)
परिवर्तन किसी भी प्रोग्राम है जो SIGALRM का उपयोग करता है के बाद करने के लिए कॉल के पास टूटा जा सकता है और कोई भी प्रोग्राम जिसमें ब्लॉकिंग-सिस्कल पुनरारंभ कोड नहीं है, गलत परिणाम दे सकता है।
इसके अलावा, आप सीधे glibc बाइनरी में पूर्णांक मूल्यों को बदल सकते (कृपया, प्रणाली विस्तृत libc.so
पर ऐसा नहीं है, एक अलग प्रतिलिपि बनाने के लिए और यह LD_LIBRARY_PATH साथ कार्यक्रम के लिए दे)
द्विआधारी पैच के लिए, ITIMER_PROF 2 है ; ITIMER_REAL 0 है; SIGPROF 27 (0x1b) है; SIGALRM 14 (0x0e) है। Glibc के profil
फ़ंक्शन में प्रत्येक निरंतर के लिए दो स्थान हैं।
एक और तरीका एक पट्टा-डीबगर लिखना है, जो रनटाइम पर सेटिटिमर और सिग्नेक्शन कार्यों के तर्कों को बदल देगा।
शायद आप इसके लिए gprof के अलावा कुछ और चाहते हैं। – WhirlWind
उदाहरण के लिए क्या पसंद है? – jetwolf
अपने वास्तुकला के आधार पर, dtrace पर एक नज़र डालें। – WhirlWind