निष्पादन योग्य से प्रोफ़ाइल फ़ाइल डिफ़ॉल्ट है और फ़ाइल को gmon.out
कहा जाता है। क्या कोई नया स्थान निर्दिष्ट करने का कोई तरीका है?प्रोफ़ाइल डेटा का स्थान निर्दिष्ट करने का कोई भी तरीका
मैं जीसीसी 3.4.6 का उपयोग कर रहा i386/linux2.6
निष्पादन योग्य से प्रोफ़ाइल फ़ाइल डिफ़ॉल्ट है और फ़ाइल को gmon.out
कहा जाता है। क्या कोई नया स्थान निर्दिष्ट करने का कोई तरीका है?प्रोफ़ाइल डेटा का स्थान निर्दिष्ट करने का कोई भी तरीका
मैं जीसीसी 3.4.6 का उपयोग कर रहा i386/linux2.6
बहुत बुरी तरह से, पर्यावरण परिवर्तनीय GMON_OUT_PREFIX
glibc में प्रलेखित नहीं है। मुझे वेब से निम्नलिखित जानकारी मिली और मेरी मशीन पर परीक्षण किया।
यदि आप वातावरण चर GMON_OUT_PREFIX
निर्धारित करते हैं, तो आउटपुट फ़ाइल ${GMON_OUT_PREFIX}.[PID]
के रूप में नामित किया गया है, पीआईडी प्रोफाइल प्रक्रिया का आईडी है।
उदाहरण के लिए:
GMON_OUT_PREFIX=mygmon; gcc -o foo -pg foo.c
gmon बाहर फ़ाइल है: mygmon.12345
, foo प्रक्रिया id = 12345 संभालने।
पर gprof के लिए एक अलग फ़ाइल नाम देने के लिए:
gprof a.out gprof-foo.out
उन्हें नाम बदलने के लिए के रूप में, GMON_OUT_PREFIX वातावरण चर निर्धारित किया है। मुझे यह एक अच्छा ol 'objdump द्वारा libc पर मिला .... स्वाभाविक रूप से, libc दस्तावेज़ कुछ भी नहीं कहते हैं।
मैं क्यों इस दस्तावेज नहीं है – hhafez
jscoot का समाधान मेरे लिए काम किया। लेकिन GMON_OUT_PREFIX सेटिंग निष्पादन समय पर महत्वपूर्ण है, संकलन समय पर नहीं।
मुझे पिछले सप्ताह एक ही समस्या का सामना करना पड़ा और मैंने इसे निम्न तरीके से हल किया। यहां विचार है कि जहां भी आप gmon.out फ़ाइल जेनरेट करना चाहते हैं, प्रक्रिया को वर्तमान निर्देशिका में बदलना है। फ़ाइल नाम इस तरह से बदला नहीं जा सकता है। यह आपको बदलने के लिए अनुमति देता है जहां आप फ़ाइल को सहेज सकते हैं।
#ifdef GPROF
/* so we can gprof */
if (1) {
char tmpdir[32];
snprintf(tmpdir, 32, "/tmp/%05d", mypid);
mkdir(tmpdir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
chdir(tmpdir);
}
#endif
नीचे बताया गया है, आप, जब चल रहा है संकलन नहीं GMON_OUT_PREFIX सेट करना चाहते हैं वास्तव में उत्सुक हूँ? – Yair