2012-01-03 8 views
8

जब मेरा प्रोग्राम segfaults, मैं एक coredump की उम्मीद है लेकिन कोई नहीं है। मैंने सोचा कि बस संकलन के साथ-साथ कोर फ़ाइल प्राप्त करने के लिए पर्याप्त था।segfault के बाद मेरी मूल फ़ाइल कहां है?

gcc -g -c client.c $(incdirs) 
    gcc -g -o client client.o $(LIBDIRS) $(LIBS) -lrt -lidn -lssl \ 
    /home/calls/cgi/libcurl/lib/libcurl.a -lezxml -lxmlate $(SQLIBS) 

पुस्तकालयों के सभी संकलित/साथ ही जी के साथ जुड़े हुए हैं: यहाँ मेरी makefile से जीसीसी लाइनें हैं।

और यहाँ जीसीसी संस्करण जानकारी है:

calls/cgi/client>gcc -v 
Using built-in specs. 
Target: x86_64-redhat-linux 
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux 
Thread model: posix 
gcc version 4.1.2 20080704 (Red Hat 4.1.2-51) 

मेरा प्रश्न: और क्या मैं एक कोर फ़ाइल प्राप्त करने के लिए जीसीसी (या किसी और) बताने के लिए क्या है?

उत्तर

17

यह किया कि कोर आकार 0 पर सेट किया जाता है हो सकता है अगर यह पता चलता

core file size   (blocks, -c) 0 

तो

ulimit -c unlimited 

कर

ulimit -a 

का प्रयास करें (आप संशोधित करना पड़ सकता आपके प्रोफ़ाइल लिपियों स्थायी रूप से इसे बदलने के लिए)

+0

धन्यवाद, वह कुंजी थी। इसके अलावा मुझे अंत में जीडीबी सीखने के लिए मजबूर होना पड़ा (लेकिन केवल थोड़ा सा)। तो इसके लिए भी धन्यवाद। –

3

आप उचित संसाधन सीमा निर्धारित करके विशेष रूप से कोर डंप, सक्षम करने के लिए की जरूरत है। यदि आप इसे अपने प्रोग्राम में सेट करना चाहते हैं तो सिस्टम कॉल setrlimit है। अक्सर, आपको इसे अपने खोल में सेट करने की आवश्यकता होती है, उदा। ulimit -c unlimited

और आपका प्रश्न शायद this one और कई अन्य लोगों का डुप्लिकेट है।

Btw, यह आम तौर पर नहीं है gcc जो कोर उदासीनता, यह आपके प्रोग्राम (clang या tcc तरह gcc या कुछ अन्य संकलक, द्वारा संकलित) है।

gcc -Wall -g के साथ अपने कार्यक्रम को संकलित करने के लिए मत भूलना।

और अपने प्रश्न में कई जवाब है, तो आप गूगल या अन्य खोज इंजन के साथ हजारों या उनमें से अधिक मिल जाएगा।

+0

धन्यवाद! और विशेष रूप से -Wall अनुस्मारक के लिए धन्यवाद: जब मैं इसे भूल जाता हूं तो मुझे नफरत है। –

संबंधित मुद्दे