5 त्रुटियों के बाद जीसीसी को कैसे रोकें?


80

क्या 5 त्रुटियों के पाए जाने के बाद जीएनयू सी ++ संकलक को निर्देश देना संभव है? प्रलेखन में यह नहीं मिल सकता है।

जवाबों:


94

कमांड-लाइन विकल्प संकलक को एन त्रुटियों के बाद छोड़ने का निर्देश देता है । यह विकल्प जीसीसी 4.6 और बाद में मौजूद है।-fmax-errors=N

कमांड-लाइन विकल्प -Wfatal-errorsसंकलक को एक त्रुटि के बाद छोड़ देने का निर्देश देता है । यह विकल्प जीसीसी 4.0 और बाद में मौजूद है।

जब तक आप भी निर्दिष्ट नहीं करते हैं, तब तक दोनों मामलों में, चेतावनी सीमा की ओर नहीं जाती है -Werror


5
मैं यह +1 देता हूं, लेकिन इस बारे में बयान के लिए -Werror। मेरा मानना ​​है कि चेतावनियों को बिल्कुल वैसा ही माना जाना चाहिए जैसे कि वे त्रुटियां थीं, क्योंकि ज्यादातर चेतावनियां छोटी गाड़ी कोड का संकेत हैं।
ग्रेफेड

3
@ ग्रेफडे, मुझे भी लगता है कि आम तौर पर चेतावनियों को निश्चित रूप से ठीक किया जाना चाहिए, लेकिन दुर्भाग्य से जीसीसी की कुछ चेतावनियां अनुकूलन स्तर के आधार पर ट्रिगर हो सकती हैं या नहीं, सिस्टम हेडर की सामग्री, और किसी भी अन्य चीज की संख्या जो आप आसानी से नियंत्रित नहीं कर सकते हैं। । इस प्रकार, आप अपने कैनोनिकल बिल्ड प्लेटफॉर्म (ओं) पर सभी चेतावनियों को प्राप्त कर सकते हैं, लेकिन फिर कुछ गरीब schmuck अधिक विदेशी वातावरण में निर्माण करने की कोशिश करते हैं और यह उड़ जाता है।

2
@Zack, यह नहीं है कि -Wno-system-headers किसके लिए है?
सैम मिलर

2
मैंने उन चरों को सुनाया है जो वैरिएबल को शुरू करने के लिए नहीं सुनते हैं कि कंपाइलर -Wuninitializedपर गलत सकारात्मकताएं हैं: यह मृत-लेकिन-नहीं-बल्कि-मृत स्टोर निर्देशों पर I-cache बर्बाद करता है; और अगर ऐसा कुछ परिवर्तन होता है जो चेतावनी को सकारात्मक बनाता है, तो हम चाहते हैं कि इसे पकड़ने के लिए वैलेग्राइंड हो।
zwol

3
दुर्भाग्य से, लिंकर -fmax-errorsध्वज का सम्मान नहीं करता है (जैसे कि हाथ-कोई-एली-जीबीसी 5.4.1)। मैं विकल्प का उपयोग कर रहा था -finstrument-functionsऔर अपरिभाषित __cyg_profile_func_enterफ़ंक्शन के कारण मुझे सैकड़ों त्रुटियां मिलीं ।
लूट लिया

45

आप gcc विकल्प का उपयोग कर सकते हैं:

-fmax-errors=5

इस काम के लिए।


9
@Telthien क्यों? यह मुझे एक जवाब की तरह लगता है।

13
@Telthien stackoverflow.com/questions/how-to-answer का कहना है कि "कोई भी उत्तर जो पूछने वाले को सही दिशा में जा रहा है वह सहायक है" और "संक्षिप्तता स्वीकार्य है"। उत्तर एक समाधान प्रदान करने के लिए डिज़ाइन किए गए हैं, कभी-कभी एक वाक्य में पूरा किया जा सकता है।

यदि यह संक्षिप्त रूप में उपयोगी है तो उत्तर को लंबा करने का कोई कारण नहीं है। खासतौर पर ओवरलोakeडग या पूछ-ताछ के लिए नहीं।
n611x007

1
मुझे यह बताने के लिए धन्यवाद कि मैंने अपना उत्तर लिखने के बाद एक नई सुविधा जोड़ी थी।
21

5

मैं ऐसे विकल्प का भी स्वागत करूंगा। अभी के लिए, मैं पहले पाँच त्रुटियों को प्राप्त करने के लिए निम्नलिखित समाधान का उपयोग कर रहा हूँ:

<make> 2>&1|grep error|head -5

1

मुझे पूछना होगा कि आप ऐसा क्यों करना चाहेंगे। कभी-कभी कोड में मौजूद त्रुटि पहले या पहले पांच त्रुटियों में भी नहीं पाई जाती है। कभी-कभी यह उससे परे होता है और सूची को नीचे स्क्रॉल करने के बाद ही पहचानने योग्य होता है। एक बेहतर तरीका यह हो सकता है कि आप अपने कोड को तोड़कर छोटे पुस्तकालयों में रखें यदि आप संकलन के समय परेशान होते हैं। या यदि आप एक कमांड लाइन के स्क्रीन को स्क्रॉल करने वाली चीजों से संबंधित हैं, तो संदेशों में किसी फ़ाइल को पाइप करने के लिए '>>' ऑपरेटर का उपयोग करते हैं।


1
यह सिर्फ त्रुटि लॉग पठनीयता की बात है। समस्या को समझने के लिए 5 त्रुटियां पर्याप्त हैं, कम से कम मेरे मामले में :)
yegor256

14
वास्तव में? मेरा अनुभव इसके ठीक विपरीत रहा है - विशेषकर C ++ में, जब तक कि मैं विशिष्ट प्रकार के रिफैक्टरिंग कार्य नहीं कर रहा हूं, जो बहुत सारी असतत त्रुटियां पैदा करता है (आमतौर पर इस्तेमाल की जाने वाली पद्धति के लिए तर्कों को बदलना), पहली त्रुटि होने की संभावना है केवल एक ही है जो किसी भी उपयोग में है।
१२:४२ पर ज्वॉल

@ FaZend.com मैं देखता हूं, मुझे खेद है कि मैंने तब एक गैर-उत्तर प्रदान किया। नीचे दिए गए जैक का जवाब शायद सबसे अच्छा है जब तक आप इन त्रुटि को पार्स करने के लिए एक छोटी सी स्क्रिप्ट लिखने जा रहे हैं और 5 त्रुटियों के आउटपुट के बाद प्रक्रिया को मार देंगे। (हालांकि मैं इस कथन से काफी अनभिज्ञ हो सकता हूं।)
गेहूं

1
लोगों को इस मुद्दे पर बहुत सीमित कल्पना लगती है। इस परिदृश्य के बारे में क्या? आपने पहली बार एक कार्यक्रम को नए वातावरण में चित्रित किया है। आपको कुछ त्रुटियां और संकलन गर्भपात मिलते हैं। आपको पता नहीं है कि पुराने परिवेश और नए के बीच कितनी असंगतताएं हैं। आप क्या जानना चाहते हैं कि स्थिति कितनी खराब है और आपके कोड में कितने मुद्दे हैं। आप सभी त्रुटियों को एक विशाल सूची में प्राप्त करना चाहेंगे ताकि आप अनुमान लगा सकें कि आपको उन सभी को ठीक करने में कितना समय लगेगा।
फिल अप्पी

4
@PhillApley उस समस्या यह है कि एक एकल त्रुटि अक्सर फ्लो-ऑन त्रुटियों (एसटीएल सुझावों के टन के साथ) का एक झरना बंद कर देती है, इसलिए यदि आप त्रुटियों और चेतावनियों की मात्रा से न्याय करते हैं, तो आपको आवश्यक प्रयास को नजरअंदाज करना चाहिए और देना चाहिए यूपी।
इवगेनी सर्गेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.