उत्पन्न नहीं करता है मैंने प्रोफाइलिंग ध्वज (-pg
) का उपयोग कर जीसीसी के साथ एक कोड संकलित किया है, लेकिन जब मैं प्रोग्राम चलाता हूं तो कोई gmon.out उत्पन्न नहीं होता है।
मैंने परीक्षण कोड संकलित किया - वास्तव में, this प्रश्न से - यह देखने के लिए कि संकलन ध्वज & gprof काम कर रहे थे और, हाँ, यह काम करता था।प्रोफाइलिंग झंडा के साथ संकलित कोड gmon.out
कोड (xrttimetag
नाम) निम्न पंक्ति इस्तेमाल किया गया था (यहाँ नीचे मैं -I(...)
और -L(...)
इस्तेमाल किया अन्य वैज्ञानिक पुस्तकालयों के लिए एक बहुत बड़ा पथों की सूची को छिपाने के लिए) संकलन करने के लिए:
gcc -c -o ./xrttimetag.o -Wall --pedantic -Wno-comment -Wno-long-long -pg -fPIC -I(...) -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DPACKAGE_URL="" -Dg77Fortran=1 -DgFortran=1 -DHAVE_CONNECT=1 -DHAVE_ACCEPT=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIBM=1 -DHAVE_LIBDL=1 -DHAVE_LIBNCURSES=1 -DSIZEOF_LONG=8 xrttimetag.c
gcc -o xrttimetag xrttimetag.o -L(...) -lswxrt -latFunctions3.3 -lcoordfits -lcoord -lephemeris -lhdinit_2.7 -lhdutils_2.7 -lape_2.8 -lcfitsio_3.37 -lreadline -lhdio_2.7 -lncurses -ldl -lm -L/usr/lib64/gcc/x86_64-suse-linux/4.6 -L/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.6/../../.. -L/usr/lib64/gcc/x86_64-suse-linux/4.6 -L/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/lib -L/usr/lib64/gcc/x86_64-suse-linux/4.6/../../.. -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc
मैं संबंधित प्रतीकों के लिए देखा gmon
पर करने के लिए द्विआधारी उत्पन्न होते हैं और वे क्योंकि वे अपरिभाषित हैं मेरे लिए थोड़ा अजीब लग रही है:
readelf -s `which xrttimetag` | egrep "gmon|mcount"
21: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
74: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.2.5 (2)
41: 000000000040267c 0 FUNC LOCAL DEFAULT 15 call_gmon_start
96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
166: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [email protected]@GLIBC_2.2.5
OT पर
जी ++ -pg test.cpp
और "gmon | mcount" के लिए खोज प्रतीकों मुझे दे: उसके हाथ, test कोड, मैं के साथ संकलित
readelf -s test | egrep "gmon|mcount"
6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.2.5 (3)
11: 0000000000400850 63 FUNC GLOBAL DEFAULT 15 __gmon_start__
40: 0000000000000000 0 FILE LOCAL DEFAULT ABS gmon-start.c
43: 0000000000400890 0 FUNC LOCAL DEFAULT 15 call_gmon_start
73: 0000000000400850 63 FUNC GLOBAL DEFAULT 15 __gmon_start__
91: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [email protected]@GLIBC_2.2.5
हम क्या "gmon" प्रतीकों को _ test_ कोड के लिए अच्छी तरह से परिभाषित किया गया है और _ xrttimetag_ के लिए नहीं, लेकिन मुझे वास्तव में क्यों नहीं समझा जाता है। मैं क्या खो रहा हूँ?
धन्यवाद।
पीएस: मैंने gmon.out is not written after compiling with gcc -pg -g प्रश्न देखा, और यह एक नकल नहीं है, जब तक कि मैंने इसे पूरी तरह गलत समझा नहीं।
मुझे एक ही समस्या थी .. उत्कृष्ट समस्या विवरण और उत्तर! – brokenfoot