Amazon Best VPN GoSearch

ऑनवर्क्स फ़ेविकॉन

वालग्रिंड

उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर पर ऑनवर्क्स मुफ्त होस्टिंग प्रदाता में वालग्रिंड चलाएं

यह कमांड वालग्रिंड है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


वालग्रिंड - डिबगिंग और प्रोफाइलिंग प्रोग्राम के लिए टूल का एक सूट

SYNOPSIS


वालग्रिंड [valgrind-विकल्प] [आपका कार्यक्रम] [आपके कार्यक्रम-विकल्प]

वर्णन


वेलग्रिंड लिनक्स निष्पादनयोग्यों की डिबगिंग और प्रोफाइलिंग के लिए एक लचीला प्रोग्राम है। इसमें शामिल है
एक कोर का, जो सॉफ्टवेयर में एक सिंथेटिक सीपीयू और डिबगिंग की एक श्रृंखला प्रदान करता है
प्रोफ़ाइलिंग उपकरण. आर्किटेक्चर मॉड्यूलर है, जिससे नए उपकरण आसानी से बनाए जा सकते हैं
मौजूदा संरचना को छेड़े बिना.

नीचे वर्णित कुछ विकल्प सभी वालग्रिंड टूल के साथ काम करते हैं, और कुछ केवल इनके साथ काम करते हैं
कुछ या एक. अनुभाग मेमचेक विकल्प और इसके नीचे वाले टूल-विशिष्ट का वर्णन करते हैं
विकल्प.

यह मैनुअल पेज केवल बुनियादी उपयोग और विकल्पों को कवर करता है। अधिक विस्तृत जानकारी के लिए,
कृपया अपने सिस्टम पर HTML दस्तावेज़ देखें:
$INSTALL/share/doc/valgrind/html/index.html, या ऑनलाइन:
http://www.valgrind.org/docs/manual/index.html.

औजार चयन विकल्प


सबसे महत्वपूर्ण विकल्प.

--उपकरण= [चूक जाना: मेमचेक]
नामक वालग्रिंड टूल चलाएँ उपकरण का नाम, उदाहरण के लिए मेमचेक, कैशेग्रिंड, कॉलग्रिंड, हेलग्रिंड,
डीआरडी, मैसिफ, लैकी, कोई नहीं, एक्सप-एसजीचेक, एक्सप-बीबीवी, एक्सप-डैट, आदि।

बुनियादी विकल्प


ये विकल्प सभी टूल के साथ काम करते हैं.

-h --मदद
सभी विकल्पों के लिए सहायता दिखाएं, कोर और चयनित टूल दोनों के लिए। यदि विकल्प
दोहराया जाता है तो यह देने के बराबर है --सहायता-डीबग.

--सहायता-डीबग
के समान --मदद, लेकिन डिबगिंग विकल्पों को भी सूचीबद्ध करता है जो आमतौर पर केवल उपयोग के लिए होते हैं
वालग्रिंड के डेवलपर्स।

--संस्करण
वालग्रिंड कोर की संस्करण संख्या दिखाएँ। टूल का अपना संस्करण हो सकता है
नंबर. यह सुनिश्चित करने के लिए एक योजना बनाई गई है कि उपकरण केवल कोर होने पर ही निष्पादित हों
संस्करण वह है जिसके साथ वे काम करने के लिए जाने जाते हैं। की संभावना को कम करने के लिए ऐसा किया गया था
टूल-बनाम-कोर संस्करण असंगतताओं से उत्पन्न होने वाली अजीब समस्याएं।

-q, --शांत
चुपचाप चलाएँ, और केवल त्रुटि संदेश प्रिंट करें। यदि आप प्रतिगमन चला रहे हैं तो उपयोगी है
परीक्षण या कुछ अन्य स्वचालित परीक्षण मशीनरी है।

-v, --शब्दशः
अधिक वाचाल बनें. आपके कार्यक्रम के विभिन्न पहलुओं पर अतिरिक्त जानकारी देता है, जैसे:
साझा की गई वस्तुएं लोड की गईं, उपयोग किए गए दमन, उपकरण की प्रगति
और निष्पादन इंजन, और असामान्य व्यवहार के बारे में चेतावनियाँ। विकल्प को दोहराते हुए
वाचालता स्तर बढ़ जाता है।

--ट्रेस-चिल्ड्रेन= [चूक जाना: नहीं]
सक्षम होने पर, वालग्रिंड इसके माध्यम से शुरू की गई उप-प्रक्रियाओं का पता लगाएगा कार्यकारी प्रणाली
पुकारना। बहु-प्रक्रिया कार्यक्रमों के लिए यह आवश्यक है।

ध्यान दें कि वालग्रिंड ए के बच्चे का पता लगाता है कांटा (ऐसा न करना कठिन होगा,
के बाद से कांटा किसी प्रक्रिया की एक समान प्रतिलिपि बनाता है), इसलिए यह विकल्प यकीनन ख़राब है
नामित. हालाँकि, अधिकांश बच्चे कांटा कॉल तुरंत कॉल करें कार्यकारी वैसे भी.

--ट्रेस-चिल्ड्रेन-स्किप=पैट1,पैट2,...
यह विकल्प तभी प्रभावी होता है जब --ट्रेस-चिल्ड्रन=हाँ निर्दिष्ट किया जाता है। यह अनुमति देता है
कुछ बच्चों को छोड़ दिया जाए। विकल्प के लिए पैटर्न की अल्पविराम से अलग की गई सूची लेता है
बाल निष्पादनयोग्यों के नाम जिनका वालग्रिंड को पता नहीं लगाना चाहिए। पैटर्न हो सकते हैं
मेटाएक्टर शामिल करें? और *, जिनका सामान्य अर्थ है।

यह प्रक्रियाओं के पेड़ से अरुचिकर शाखाओं को काटने के लिए उपयोगी हो सकता है
वालग्रिंड पर चलाएँ। लेकिन इसका इस्तेमाल करते समय आपको सावधान रहना चाहिए। जब वालग्रिंड ट्रेसिंग छोड़ देता है
एक निष्पादन योग्य में, यह न केवल उस निष्पादन योग्य का पता लगाना छोड़ देता है, बल्कि इसे छोड़ भी देता है
उस निष्पादन योग्य की किसी भी चाइल्ड प्रक्रिया का पता लगाना। दूसरे शब्दों में, झंडा नहीं है
केवल निर्दिष्ट निष्पादनयोग्यों पर ट्रेसिंग को रोकने का कारण बनता है - यह ट्रेसिंग को छोड़ देता है
संपूर्ण प्रक्रिया उपवृक्ष किसी भी निर्दिष्ट निष्पादनयोग्य पर निहित हैं।

--trace-children-skip-by-arg=patt1,patt2,...
यह वही है --ट्रेस-चिल्ड्रेन-स्किप, एक अंतर के साथ: निर्णय के रूप में
बच्चे का पता लगाना है या नहीं, इसकी प्रक्रिया बच्चे के तर्कों की जांच करके बनाई जाती है
प्रक्रिया, इसके निष्पादन योग्य के नाम के बजाय।

--बच्चा-खामोश-बाद-कांटा= [चूक जाना: नहीं]
सक्षम होने पर, वालग्रिंड बच्चे के लिए कोई डिबगिंग या लॉगिंग आउटपुट नहीं दिखाएगा
ए से उत्पन्न प्रक्रिया कांटा पुकारना। यह आउटपुट को कम भ्रमित करने वाला बना सकता है (हालाँकि
अधिक भ्रामक) जब बच्चे पैदा करने वाली प्रक्रियाओं से निपटते हैं। यह विशेष रूप से है
के संयोजन में उपयोगी --ट्रेस-चिल्ड्रेन=. इस विकल्प का प्रयोग भी जोरदार है
यदि आप XML आउटपुट का अनुरोध कर रहे हैं तो अनुशंसित (--xml=हाँ), चूँकि अन्यथा XML से
बच्चे और माता-पिता के बीच घालमेल हो सकता है, जो आमतौर पर इसे बेकार बना देता है।

--vgdb= [चूक जाना: हां]
Valgrind जब "gdbserver" कार्यक्षमता प्रदान करेगा --vgdb=हाँ or --vgdb=पूर्ण is
निर्दिष्ट. यह बाहरी GNU GDB डिबगर को आपके प्रोग्राम को नियंत्रित और डीबग करने की अनुमति देता है
जब यह वालग्रिंड पर चलता है। --vgdb=पूर्ण महत्वपूर्ण प्रदर्शन ओवरहेड्स खर्च होते हैं, लेकिन
अधिक सटीक ब्रेकप्वाइंट और वॉचप्वाइंट प्रदान करता है। का उपयोग करके अपने प्रोग्राम को डिबग करना देखें
विस्तृत विवरण के लिए वालग्रिंड का gdbserver और GDB।

यदि एम्बेडेड gdbserver सक्षम है लेकिन वर्तमान में कोई gdb उपयोग नहीं किया जा रहा है, तो vgdb
कमांड लाइन उपयोगिता एक शेल से वेलग्रिंड को "मॉनिटर कमांड" भेज सकती है।
वैलग्रिंड कोर वैलग्रिंड मॉनिटर कमांड का एक सेट प्रदान करता है। एक उपकरण वैकल्पिक रूप से कर सकते हैं
टूल विशिष्ट मॉनिटर कमांड प्रदान करें, जो टूल विशिष्ट में प्रलेखित हैं
अध्याय.

--vgdb-त्रुटि= [चूक जाना: 999999999]
Valgrind gdbserver सक्षम होने पर इस विकल्प का उपयोग करें --vgdb=हाँ or --vgdb=पूर्ण.
त्रुटियों की रिपोर्ट करने वाले उपकरण फ़्रीज़ होने से पहले "संख्या" त्रुटियों की रिपोर्ट किए जाने की प्रतीक्षा करेंगे
कार्यक्रम और आपके GDB से जुड़ने की प्रतीक्षा कर रहा हूँ। यह इस प्रकार है कि शून्य का मान
आपके प्रोग्राम के निष्पादित होने से पहले gdbserver प्रारंभ हो जाएगा। यह है
आमतौर पर निष्पादन से पहले जीडीबी ब्रेकप्वाइंट डालने के लिए उपयोग किया जाता है, और टूल के साथ भी काम करता है
जो मैसिफ जैसी त्रुटियों की रिपोर्ट नहीं करता है।

--vgdb-stop-at= [चूक जाना: कोई नहीं]
Valgrind gdbserver सक्षम होने पर इस विकल्प का उपयोग करें --vgdb=हाँ or --vgdb=पूर्ण.
प्रत्येक त्रुटि के लिए Valgrind gdbserver को लागू किया जाएगा --vgdb-त्रुटि किया गया है
की सूचना दी। आप अतिरिक्त रूप से Valgrind gdbserver को अन्य के लिए लागू करने के लिए कह सकते हैं
घटनाएँ, निम्नलिखित में से किसी एक तरीके से निर्दिष्ट:

· एक या अधिक की अल्पविराम से अलग की गई सूची स्टार्टअप निकास valgrindabexit.

मूल्य स्टार्टअप निकास valgrindabexit क्रमशः gdbserver को आमंत्रित करने का संकेत दें
आपके प्रोग्राम के निष्पादित होने से पहले, आपके प्रोग्राम के अंतिम निर्देश के बाद, पर
वालग्रिंड असामान्य निकास (जैसे आंतरिक त्रुटि, स्मृति से बाहर, ...)।

नोट: स्टार्टअप और --vgdb-त्रुटि=0 क्या दोनों Valgrind gdbserver को लागू करने का कारण बनेंगे
आपके प्रोग्राम के निष्पादित होने से पहले. --vgdb-त्रुटि=0 इसके अलावा आपका कारण होगा
बाद की सभी त्रुटियों पर रोक लगाने के लिए प्रोग्राम।

· सब पूरा सेट निर्दिष्ट करने के लिए. यह के बराबर है
--vgdb-स्टॉप-एट = स्टार्टअप, बाहर निकलें, valgrindabexit.

· कोई नहीं खाली सेट के लिए.

--ट्रैक-एफडीएस= [चूक जाना: नहीं]
सक्षम होने पर, वेलग्रिंड बाहर निकलने पर या चालू होने पर खुले फ़ाइल डिस्क्रिप्टर की एक सूची प्रिंट करेगा
अनुरोध, gdbserver मॉनिटर कमांड के माध्यम से वी.जानकारी open_fds. प्रत्येक फ़ाइल के साथ
डिस्क्रिप्टर उस स्थान का स्टैक बैकट्रेस प्रिंट करता है जहां फ़ाइल खोली गई थी और कोई भी विवरण
फ़ाइल डिस्क्रिप्टर से संबंधित, जैसे फ़ाइल नाम या सॉकेट विवरण।

--टाइम-स्टाम्प= [चूक जाना: नहीं]
सक्षम होने पर, प्रत्येक संदेश के पहले बीते हुए वॉलक्लॉक का संकेत दिया जाता है
स्टार्टअप के बाद का समय, दिन, घंटे, मिनट, सेकंड और मिलीसेकंड के रूप में व्यक्त किया जाता है।

--लॉग-एफडी= [चूक जाना: 2, stderr]
निर्दिष्ट करता है कि वालग्रिंड को अपने सभी संदेश निर्दिष्ट फ़ाइल पर भेजने चाहिए
वर्णनकर्ता. डिफ़ॉल्ट, 2, मानक त्रुटि चैनल (stderr) है। ध्यान दें कि ऐसा हो सकता है
क्लाइंट के स्वयं के stderr के उपयोग में हस्तक्षेप करें, जैसा कि Valgrind का आउटपुट होगा
क्लाइंट द्वारा stderr को भेजे गए किसी भी आउटपुट के साथ इंटरलीव किया गया।

--लॉग-फ़ाइल=
निर्दिष्ट करता है कि वालग्रिंड को अपने सभी संदेश निर्दिष्ट फ़ाइल में भेजने चाहिए। यदि
फ़ाइल नाम खाली है, यह निरस्त होने का कारण बनता है। तीन विशेष प्रारूप विनिर्देशक हैं
फ़ाइल नाम में उपयोग किया जा सकता है.

%p वर्तमान प्रक्रिया आईडी से बदल दिया गया है। यह उस प्रोग्राम के लिए बहुत उपयोगी है
एकाधिक प्रक्रियाओं को लागू करें। चेतावनी: यदि आप उपयोग करते हैं --ट्रेस-चिल्ड्रन=हाँ और आपका कार्यक्रम
एकाधिक प्रक्रियाओं को आमंत्रित करता है या आपका प्रोग्राम बाद में निष्पादन को कॉल किए बिना फोर्क करता है, और
आप इस विनिर्देशक का उपयोग नहीं करते (या %q नीचे निर्दिष्ट), सभी से वालग्रिंड आउटपुट
वे प्रक्रियाएँ एक फ़ाइल में चली जाएंगी, संभवतः अव्यवस्थित हो जाएंगी, और संभवतः अधूरी हो जाएंगी।

%q{FOO} पर्यावरण चर की सामग्री के साथ प्रतिस्थापित किया गया है FOO। अगर {फू}
भाग विकृत है, गर्भपात का कारण बनता है। इस विनिर्देशक की शायद ही कभी आवश्यकता होती है, लेकिन बहुत
कुछ परिस्थितियों में उपयोगी (उदाहरण के लिए एमपीआई प्रोग्राम चलाते समय)। विचार यह है कि आप
एक वेरिएबल निर्दिष्ट करें जो कार्य में प्रत्येक प्रक्रिया के लिए अलग-अलग सेट किया जाएगा
उदाहरण के लिए BPROC_RANK या जो भी आपके MPI सेटअप में लागू हो। यदि नामित है
पर्यावरण चर सेट नहीं है, यह गर्भपात का कारण बनता है। ध्यान दें कि कुछ कोशों में, {
और } पात्रों को बैकस्लैश से बचने की आवश्यकता हो सकती है।

%% के साथ बदल दिया गया है %.

यदि एक % यदि किसी अन्य वर्ण का अनुसरण किया जाता है, तो यह गर्भपात का कारण बनता है।

यदि फ़ाइल नाम किसी सापेक्ष फ़ाइल नाम को निर्दिष्ट करता है, तो इसे प्रोग्राम के आरंभ में रखा जाता है
कार्यशील निर्देशिका: यह वर्तमान निर्देशिका है जब प्रोग्राम शुरू हुआ था
कांटा के बाद या निष्पादन के बाद निष्पादन। यदि यह एक पूर्ण फ़ाइल नाम निर्दिष्ट करता है (अर्थात्।
'/' से शुरू होता है) फिर इसे वहां रख दिया जाता है।

--लॉग-सॉकेट=
निर्दिष्ट करता है कि वालग्रिंड को अपने सभी संदेश निर्दिष्ट पोर्ट पर भेजने चाहिए
निर्दिष्ट आईपी पता. पोर्ट को छोड़ा जा सकता है, ऐसी स्थिति में पोर्ट 1500 का उपयोग किया जाता है। यदि एक
निर्दिष्ट सॉकेट से कनेक्शन नहीं बनाया जा सकता, वालग्रिंड लेखन पर वापस आ जाता है
मानक त्रुटि (stderr) पर आउटपुट। इस विकल्प का उपयोग करने का इरादा है
वेलग्रिंड-श्रोता कार्यक्रम के साथ संयोजन। अधिक जानकारी के लिए, देखें
मैनुअल में टिप्पणी.

त्रुटि-संबंधी विकल्प


इन विकल्पों का उपयोग उन सभी उपकरणों द्वारा किया जाता है जो त्रुटियों की रिपोर्ट कर सकते हैं, उदाहरण के लिए मेमचेक, लेकिन नहीं
कैशग्राइंड।

--xml= [चूक जाना: नहीं]
सक्षम होने पर, आउटपुट के महत्वपूर्ण भाग (जैसे टूल त्रुटि संदेश) अंदर होंगे
सादे पाठ के बजाय XML प्रारूप. इसके अलावा, XML आउटपुट को भेजा जाएगा
सादे पाठ आउटपुट से भिन्न आउटपुट चैनल। इसलिए आपको भी एक का इस्तेमाल जरूर करना चाहिए
of --xml-fd, --xml-फ़ाइल or --xml-सॉकेट यह निर्दिष्ट करने के लिए कि XML कहाँ भेजा जाना है।

कम महत्वपूर्ण संदेश अभी भी सादे पाठ में मुद्रित किए जाएंगे, लेकिन क्योंकि XML
आउटपुट और सादा पाठ आउटपुट विभिन्न आउटपुट चैनलों (गंतव्य) पर भेजे जाते हैं
सादा पाठ आउटपुट अभी भी नियंत्रित होता है --लॉग-एफडी, --बोटा दस्तावेज और --लॉग-सॉकेट)
इससे समस्याएँ उत्पन्न नहीं होनी चाहिए.

इस विकल्प का उद्देश्य उन उपकरणों के लिए जीवन को आसान बनाना है जो वालग्रिंड के आउटपुट का उपभोग करते हैं
इनपुट, जैसे जीयूआई फ्रंट एंड। वर्तमान में यह विकल्प मेमचेक, हेलग्रिंड, के साथ काम करता है।
डीआरडी और एसजीचेक। आउटपुट स्वरूप फ़ाइल में निर्दिष्ट है
Valgrind 4 के लिए स्रोत ट्री में docs/internals/xml-output-protocol3.5.0.txt या
बाद में.

XML आउटपुट का अनुरोध करते समय GUI को पारित करने के लिए अनुशंसित विकल्प हैं: --xml=हाँ
XML आउटपुट सक्षम करने के लिए, --xml-फ़ाइल XML आउटपुट को (संभवतः GUI-चयनित) भेजने के लिए
फ़ाइल, --बोटा दस्तावेज सादे पाठ आउटपुट को दूसरी GUI-चयनित फ़ाइल में भेजने के लिए,
--बच्चा-खामोश-बाद-कांटा=हाँ, तथा -q सादे पाठ आउटपुट को क्रिटिकल तक सीमित करने के लिए
त्रुटि संदेश वेलग्रिंड द्वारा ही बनाए गए हैं। उदाहरण के लिए, किसी निर्दिष्ट को पढ़ने में विफलता
दमन फ़ाइल को एक गंभीर त्रुटि संदेश के रूप में गिना जाता है। इस प्रकार, एक सफल के लिए
चलाएं टेक्स्ट आउटपुट फ़ाइल खाली हो जाएगी। लेकिन अगर यह खाली नहीं है, तो इसमें शामिल होगा
महत्वपूर्ण जानकारी जिसके बारे में GUI उपयोगकर्ता को अवगत कराया जाना चाहिए।

--xml-fd= [चूक जाना: - 1, अक्षम]
निर्दिष्ट करता है कि वालग्रिंड को अपना XML आउटपुट निर्दिष्ट फ़ाइल डिस्क्रिप्टर पर भेजना चाहिए।
इसका उपयोग इसके साथ मिलकर किया जाना चाहिए --xml=हाँ.

--xml-फ़ाइल=
निर्दिष्ट करता है कि वालग्रिंड को अपना XML आउटपुट निर्दिष्ट फ़ाइल में भेजना चाहिए। यह होना चाहिए
के साथ संयोजन के रूप में प्रयोग किया जाता है --xml=हाँ। कोई %p or %q फ़ाइल नाम में दिखाई देने वाले अनुक्रम
बिल्कुल उसी तरह से विस्तारित होते हैं जैसे वे हैं --बोटा दस्तावेज. विवरण देखें
of --बोटा दस्तावेज ब्योरा हेतु।

--xml-सॉकेट=
निर्दिष्ट करता है कि Valgrind को अपना XML आउटपुट निर्दिष्ट पोर्ट पर निर्दिष्ट करना चाहिए
आईपी ​​पता। इसका उपयोग इसके साथ मिलकर किया जाना चाहिए --xml=हाँ. तर्क का स्वरूप है
वैसा ही जैसा कि उपयोग किया जाता है --लॉग-सॉकेट. का विवरण देखें --लॉग-सॉकेट आगे के लिए
विवरण।

--xml-उपयोगकर्ता-टिप्पणी=
XML आउटपुट की शुरुआत में एक अतिरिक्त उपयोगकर्ता टिप्पणी स्ट्रिंग एम्बेड करता है। केवल तभी काम करता है जब
--xml=हाँ निर्दिष्ट किया जाता है; अन्यथा नजरअंदाज कर दिया गया।

--डेमंगल= [चूक जाना: हां]
C++ नामों के स्वचालित डीमैंगलिंग (डिकोडिंग) को सक्षम/अक्षम करें। डिफ़ॉल्ट रूप से सक्षम. कब
सक्षम, वालग्रिंड एन्कोडेड C++ नामों को किसी चीज़ में वापस अनुवाद करने का प्रयास करेगा
मूल के निकट पहुँचना। डिमैंगलर g++ संस्करण 2.X द्वारा उलझे हुए प्रतीकों को संभालता है,
3.एक्स और 4.एक्स.

डीमैंगलिंग के बारे में एक महत्वपूर्ण तथ्य यह है कि दमन में फ़ंक्शन नामों का उल्लेख किया गया है
फ़ाइलें अपने अस्त-व्यस्त रूप में होनी चाहिए. Valgrind जब फ़ंक्शन नामों को ख़राब नहीं करता है
लागू दमन की खोज, क्योंकि अन्यथा करने से दमन हो जाएगा
फ़ाइल सामग्री वालग्रिंड की डीमैंगलिंग मशीनरी की स्थिति पर निर्भर करती है, और धीमी भी
नीचे दमन मिलान.

--संख्या-कॉलर्स= [चूक जाना: 12]
प्रोग्राम की पहचान करने वाले स्टैक ट्रेस में दिखाई गई प्रविष्टियों की अधिकतम संख्या निर्दिष्ट करता है
स्थान. ध्यान दें कि त्रुटियाँ केवल शीर्ष चार फ़ंक्शन स्थानों का उपयोग करके आम तौर पर सामने आती हैं
(वर्तमान फ़ंक्शन में स्थान, और इसके तीन तत्काल कॉल करने वालों का स्थान)। इसलिए इस
रिपोर्ट की गई त्रुटियों की कुल संख्या को प्रभावित नहीं करता.

इसके लिए अधिकतम मान 500 है। ध्यान दें कि उच्च सेटिंग्स Valgrind को चलाएँगी
थोड़ा और धीरे-धीरे और थोड़ी अधिक मेमोरी लें, लेकिन साथ काम करते समय उपयोगी हो सकता है
गहराई से नेस्टेड कॉल चेन वाले प्रोग्राम।

--unw-स्टैक-स्कैन-थ्रेश= [चूक जाना: 0] , --unw-स्टैक-स्कैन-फ़्रेम= [चूक जाना:
5]
स्टैक-स्कैनिंग समर्थन केवल एआरएम लक्ष्यों पर उपलब्ध है।

ये झंडे स्टैक स्कैनिंग द्वारा स्टैक अनवाइंडिंग को सक्षम और नियंत्रित करते हैं। जब सामान्य
स्टैक अनवाइंडिंग मैकेनिज्म - बौने सीएफआई रिकॉर्ड का उपयोग, और फ्रेम-पॉइंटर का अनुसरण
- विफल, स्टैक स्कैनिंग स्टैक ट्रेस को पुनर्प्राप्त करने में सक्षम हो सकती है।

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

स्टैक स्कैनिंग एक सरल तकनीक है: अनवाइंडर स्टैक से शब्दों को पढ़ता है, और
यह देखने की जांच करके कि उनमें से कौन सा वापसी पता हो सकता है, अनुमान लगाने का प्रयास करता है
एआरएम या थंब कॉल निर्देशों के ठीक बाद बिंदु। यदि हां, तो यह शब्द इसमें जोड़ दिया जाता है
बैकट्रेस।

मुख्य ख़तरा तब होता है जब कोई फ़ंक्शन कॉल अपना रिटर्न पता छोड़कर वापस लौटता है
उजागर, और एक नया फ़ंक्शन कॉल किया जाता है, लेकिन नया फ़ंक्शन पुराने को ओवरराइट नहीं करता है
पता। इसका परिणाम यह होता है कि बैकट्रेस में फ़ंक्शंस के लिए प्रविष्टियाँ हो सकती हैं
जो पहले ही वापस आ चुके हैं, और इसलिए बहुत भ्रमित करने वाले हैं।

इस कार्यान्वयन की दूसरी सीमा यह है कि यह केवल पृष्ठ (4KB,
सामान्य रूप से) जिसमें शुरुआती स्टैक पॉइंटर होता है। यदि स्टैक फ़्रेम बड़े हैं, तो यह
इसके परिणामस्वरूप ट्रेस में केवल कुछ (या कोई भी नहीं) मौजूद हो सकता है। इसके अलावा, यदि आप
दुर्भाग्यशाली हैं और इसके पृष्ठ के अंत के पास एक प्रारंभिक स्टैक पॉइंटर है
स्कैन से सभी दिलचस्प फ़्रेम छूट सकते हैं।

डिफ़ॉल्ट रूप से स्टैक स्कैनिंग अक्षम है. सामान्य उपयोग का मामला यह है कि जब a
अन्यथा स्टैक ट्रेस बहुत छोटा होगा। तो, इसे सक्षम करने के लिए, उपयोग करें
--unw-स्टैक-स्कैन-थ्रेश=संख्या. यह वालग्रिंड से स्टैक स्कैनिंग का उपयोग करने का प्रयास करने का अनुरोध करता है
स्टैक ट्रेस को "विस्तारित" करें जिसमें संख्या फ़्रेम से कम संख्या हो।

यदि स्टैक स्कैनिंग होती है, तो यह केवल फ़्रेम की अधिकतम संख्या ही उत्पन्न करेगी
--unw-stack-scan-frames द्वारा निर्दिष्ट। आमतौर पर, स्टैक स्कैनिंग से बहुत सारी चीज़ें उत्पन्न होती हैं
कचरा प्रविष्टियाँ कि यह मान डिफ़ॉल्ट रूप से कम मान (5) पर सेट है। किसी भी हालत में नहीं होगा
--num-callers द्वारा निर्दिष्ट मान से बड़ा एक स्टैक ट्रेस बनाया जाए।

--त्रुटि-सीमा= [चूक जाना: हां]
सक्षम होने पर, वेलग्रिंड कुल 10,000,000 या 1,000 के बाद त्रुटियों की रिपोर्ट करना बंद कर देता है
अलग-अलग, देखे गए हैं। यह त्रुटि ट्रैकिंग मशीनरी को रोकने के लिए है
कई त्रुटियों के साथ कार्यक्रमों में ओवरहेड एक बड़ा प्रदर्शन बन रहा है।

--त्रुटि-निकासकोड= [चूक जाना: 0]
यदि वालग्रिंड ने किसी त्रुटि की सूचना दी है तो वापस लौटने के लिए एक वैकल्पिक निकास कोड निर्दिष्ट करता है
दौड़ना। जब डिफ़ॉल्ट मान (शून्य) पर सेट किया जाता है, तो वैलग्रिंड से रिटर्न मान हमेशा रहेगा
सिम्युलेटेड प्रक्रिया का रिटर्न मान हो। जब इसे शून्येतर मान पर सेट किया जाता है, तो वह
यदि वालग्रिंड को कोई त्रुटि मिलती है, तो इसके बजाय मान लौटा दिया जाता है। यह प्रयोग करने में उपयोगी है
वेलग्रिंड एक स्वचालित परीक्षण सूट के भाग के रूप में है, क्योंकि यह परीक्षण का पता लगाना आसान बनाता है
ऐसे मामले जिनके लिए वालग्रिंड ने केवल रिटर्न कोड का निरीक्षण करके त्रुटियों की सूचना दी है।

--त्रुटि-मार्कर= , [चूक जाना: कोई नहीं]
जब त्रुटियाँ सादे पाठ के रूप में आउटपुट होती हैं (अर्थात XML का उपयोग नहीं किया जाता है), --त्रुटि-चिह्नक का निर्देश देता है
युक्त एक पंक्ति आउटपुट करें शुरू करना (समाप्त) प्रत्येक त्रुटि से पहले (बाद में) स्ट्रिंग।

ऐसी मार्कर लाइनें त्रुटियों की खोज करने और/या त्रुटियों को निकालने की सुविधा प्रदान करती हैं
आउटपुट फ़ाइल जिसमें प्रोग्राम आउटपुट के साथ मिश्रित वालग्रिंड त्रुटियां शामिल हैं।

ध्यान दें कि खाली मार्कर स्वीकार किए जाते हैं। तो, केवल आरंभ (या अंत) मार्कर का उपयोग करना ही उचित है
संभव.

--सिगिल-डायग्नोस्टिक्स= [चूक जाना: हां]
अवैध अनुदेश डायग्नोस्टिक्स की छपाई सक्षम/अक्षम करें। डिफ़ॉल्ट रूप से सक्षम, लेकिन
जब डिफॉल्ट अक्षम हो जाता है --शांत दिया हुआ है। डिफ़ॉल्ट हमेशा स्पष्ट रूप से हो सकता है
यह विकल्प देकर ओवरराइड किया गया।

सक्षम होने पर, जब भी, कुछ निदान के साथ एक चेतावनी संदेश मुद्रित किया जाएगा
एक निर्देश मिलता है कि वालग्रिंड इससे पहले डिकोड या अनुवाद नहीं कर सकता
प्रोग्राम को एक SIGILL सिग्नल दिया जाता है। अक्सर कोई अवैध निर्देश किसी बग का संकेत देता है
वेलग्रिंड में विशेष निर्देश के लिए प्रोग्राम या अनुपलब्ध समर्थन। लेकिन कुछ
प्रोग्राम जानबूझकर किसी निर्देश को निष्पादित करने का प्रयास करते हैं जो गायब हो सकता है और फंस सकता है
प्रोसेसर सुविधाओं का पता लगाने के लिए SIGILL सिग्नल। इस ध्वज के प्रयोग से यह संभव हो जाता है
ऐसे नैदानिक ​​आउटपुट से बचें जो आपको अन्यथा ऐसे मामलों में मिलेगा।

--दिखाएँ-नीचे-मुख्य= [चूक जाना: नहीं]
डिफ़ॉल्ट रूप से, त्रुटियों के लिए स्टैक ट्रेस नीचे दिखाई देने वाले किसी भी फ़ंक्शन को नहीं दिखाते हैं मुख्य
क्योंकि अधिकांश समय यह अरुचिकर C लाइब्रेरी सामग्री और/या gobbledygook है।
वैकल्पिक रूप से, यदि मुख्य स्टैक ट्रेस में मौजूद नहीं है, स्टैक ट्रेस दिखाई नहीं देंगे
नीचे कोई भी कार्य मुख्य-ग्लिबैक जैसे कार्य __libc_start_main.
इसके अलावा, अगर मुख्य-समान कार्य ट्रेस में मौजूद हैं, उन्हें सामान्यीकृत किया जाता है
(नीचे मुख्य), आउटपुट को अधिक नियतात्मक बनाने के लिए।

यदि यह विकल्प सक्षम है, तो सभी स्टैक ट्रेस प्रविष्टियाँ दिखाई जाएंगी और मुख्यकी तरह
कार्य सामान्य नहीं होंगे.

--पूर्णपथ-बाद= [चूक जाना: नहीं है दिखाना स्रोत पथ]
डिफ़ॉल्ट रूप से वैलग्रिंड केवल स्टैक ट्रेस में फ़ाइल नाम दिखाता है, लेकिन पूर्ण पथ नहीं दिखाता है
स्रोत फ़ाइलें। बड़ी परियोजनाओं में वालग्रिंड का उपयोग करते समय जहां स्रोत मौजूद हैं
अनेक भिन्न निर्देशिकाएँ, यह असुविधाजनक हो सकती हैं। --पूर्णपथ-बाद प्रदान करता है एक
इस समस्या का लचीला समाधान. जब यह विकल्प मौजूद होता है, तो प्रत्येक का पथ
स्रोत फ़ाइल निम्नलिखित सभी महत्वपूर्ण चेतावनियों के साथ दिखाई गई है: यदि स्ट्रिंग में पाया जाता है
पथ, फिर पथ तक और सम्मिलित स्ट्रिंग छोड़ दिया गया है, अन्यथा रास्ता दिखाया गया है
असंशोधित ध्यान दें कि स्ट्रिंग पथ का उपसर्ग होना आवश्यक नहीं है।

उदाहरण के लिए, /home/janedoe/blah/src/foo/bar/xyzzy.c नामक फ़ाइल पर विचार करें। निर्दिष्ट करना
--fullpath-after=/home/janedoe/blah/src/ वालग्रिंड को इस रूप में नाम दिखाने का कारण बनेगा
foo/bar/xyzzy.c.

क्योंकि स्ट्रिंग को उपसर्ग होना आवश्यक नहीं है, --पूर्णपथ-बाद=src/ उत्पादन करेंगे
वही आउटपुट. यह तब उपयोगी होता है जब पथ में मनमाना मशीन-जनरेटेड होता है
पात्र। उदाहरण के लिए, पथ /my/build/dir/C32A1B47/blah/src/foo/xyzzy हो सकता है
foo/xyzzy का उपयोग करके काट-छांट की गई --fullpath-after=/blah/src/.

यदि आप केवल पूरा पथ देखना चाहते हैं, तो बस एक खाली स्ट्रिंग निर्दिष्ट करें:
--पूर्णपथ-बाद=. यह कोई विशेष मामला नहीं है, केवल इसका तार्किक परिणाम है
उपरोक्त नियम.

अंत में, आप उपयोग कर सकते हैं --पूर्णपथ-बाद कई बार। इसकी कोई भी उपस्थिति इसका कारण बनती है
वेलग्रिंड को पूर्ण पथ बनाने और उपरोक्त फ़िल्टरिंग नियम को लागू करने के लिए स्विच करना होगा। प्रत्येक
उत्पादित पथ की तुलना सभी से की जाती है --पूर्णपथ-बाद-निर्दिष्ट तार, में
आदेश निर्दिष्ट. मिलान करने वाली पहली स्ट्रिंग के कारण पथ को छोटा कर दिया जाता है
ऊपर वर्णित है। यदि कोई भी मेल नहीं खाता है, तो पूरा पथ दिखाया जाता है। इससे काटने में सुविधा होती है
उपसर्ग जब स्रोत कई असंबंधित निर्देशिकाओं से निकाले जाते हैं।

--अतिरिक्त-डीब्यूगिनफ़ो-पथ= [चूक जाना: अपरिभाषित और अप्रयुक्त]
डिफ़ॉल्ट रूप से वैलग्रिंड डिबग ऑब्जेक्ट के लिए कई प्रसिद्ध पथों में खोज करता है, जैसे
/usr/lib/डीबग/.

हालाँकि, ऐसे परिदृश्य भी हो सकते हैं जहाँ आप डिबग ऑब्जेक्ट को एक पर रखना चाह सकते हैं
मनमाना स्थान, जैसे मोबाइल डिवाइस पर वैलग्रिंड चलाते समय बाहरी भंडारण
सीमित स्थानीय भंडारण के साथ. एक अन्य उदाहरण ऐसी स्थिति हो सकती है जहां आपके पास नहीं है
जिस सिस्टम पर आप चल रहे हैं उस पर डिबग ऑब्जेक्ट पैकेज स्थापित करने की अनुमति
वालग्रिंड.

इन परिदृश्यों में, आप एक अतिरिक्त, अंतिम स्थान के रूप में एक पूर्ण पथ प्रदान कर सकते हैं
वैलग्रिंड निर्दिष्ट करके डिबग ऑब्जेक्ट की खोज करता है
--extra-debuginfo-path=/path/to/debug/objects. दिया गया पथ इससे पहले जोड़ा जाएगा
खोजे गए ऑब्जेक्ट का पूर्ण पथ नाम। उदाहरण के लिए, यदि वालग्रिंड ढूंढ रहा है
/w/x/y/zz.so और के लिए डिबगिनफ़ो --extra-debuginfo-path=/a/b/c निर्दिष्ट है, यह होगा
/a/b/c/w/x/y/zz.so पर डिबग ऑब्जेक्ट देखें।

यह ध्वज केवल एक बार निर्दिष्ट किया जाना चाहिए. यदि इसे एकाधिक बार निर्दिष्ट किया गया है, तो केवल
अंतिम उदाहरण का सम्मान किया जाता है।

--debuginfo-server=ipaddr:पोर्ट [चूक जाना: अपरिभाषित और अप्रयुक्त]
यह संस्करण 3.9.0 में पेश किया गया एक नया, प्रयोगात्मक फीचर है।

कुछ परिदृश्यों में किसी पर संग्रहीत ऑब्जेक्ट से डिबगिनफ़ो पढ़ना सुविधाजनक हो सकता है
अलग मशीन. इस फ़्लैग के साथ, वालग्रिंड चालू डिबगिनफ़ो सर्वर को क्वेरी करेगा
ipaddr और पोर्ट पोर्ट पर सुन रहा है, अगर यह स्थानीय में डिबगिनफ़ो ऑब्जेक्ट नहीं ढूंढ पाता है
फाइल सिस्टम।

डिबगिनफो सर्वर को पोर्ट पोर्ट पर टीसीपी कनेक्शन स्वीकार करना होगा। डिबगिनफो सर्वर है
स्रोत फ़ाइल auxprogs/valgrind-di-server.c में निहित है। यह केवल से सेवा करेगा
जिस निर्देशिका में इसे प्रारंभ किया गया है। क्लाइंट और सर्वर दोनों में पोर्ट डिफॉल्ट 1500 है
निर्दिष्ट नहीं है।

यदि Valgrind डिबगिनफ़ो सर्वर का उपयोग करके /w/x/y/zz.so के लिए डिबगिनफ़ो खोजता है, तो यह
पथनाम घटकों को हटा देगा और सर्वर पर केवल zz.so का अनुरोध करेगा। में है कि
मेल खाने वाले डिबगिनफ़ो ऑब्जेक्ट के लिए टर्न केवल अपनी वर्तमान कार्यशील निर्देशिका में दिखाई देगा।

वेलग्रिंड के अनुरोध के अनुसार डिबगिनफ़ो डेटा छोटे टुकड़ों (8 KB) में प्रसारित किया जाता है।
ट्रांसमिशन समय को कम करने के लिए प्रत्येक ब्लॉक को LZO का उपयोग करके संपीड़ित किया जाता है। कार्यान्वयन हुआ है
सिंगल-स्टेज 802.11g (वाईफाई) नेटवर्क लिंक पर सर्वश्रेष्ठ प्रदर्शन के लिए ट्यून किया गया है।

ध्यान दें कि जीएनयू डिबगलिंक सीआरसी का उपयोग करके प्राथमिक बनाम डिबग ऑब्जेक्ट के मिलान की जांच की जाती है
योजना, डिबगिनफो सर्वर का उपयोग करते समय भी निष्पादित की जाती है। ऐसी जाँच को अक्षम करने के लिए,
आपको --allow-mismatched-debuginfo=yes भी निर्दिष्ट करना होगा।

डिफ़ॉल्ट रूप से वालग्रिंड बिल्ड सिस्टम लक्ष्य के लिए वालग्रिंड-डी-सर्वर का निर्माण करेगा
प्लेटफ़ॉर्म, जो लगभग निश्चित रूप से वह नहीं है जो आप चाहते हैं। अब तक हम असमर्थ रहे हैं
बिल्ड प्लेटफ़ॉर्म के लिए इसे बनाने के लिए ऑटोमेक/ऑटोकॉन्फ प्राप्त करने का तरीका जानें। अगर आप चाहते हैं
इसका उपयोग करने के लिए, आपको शीर्ष पर दिखाए गए कमांड का उपयोग करके इसे हाथ से पुन: संकलित करना होगा
auxprogs/valgrind-di-server.c।

--allow-mismatched-debuginfo=नहीं|हाँ [नहीं]
अलग-अलग डिबगिनफ़ो ऑब्जेक्ट से डिबगिनफ़ो पढ़ते समय, वैलग्रिंड डिफ़ॉल्ट रूप से जाँच करेगा
GNU डिबगलिंक तंत्र का उपयोग करके मुख्य और डिबगिनफ़ो ऑब्जेक्ट मेल खाते हैं। यह
गारंटी देता है कि यह पुराने डिबगिनफो ऑब्जेक्ट से डिबगिनफो नहीं पढ़ता है, और
यह भी सुनिश्चित करता है कि बेमेल के परिणामस्वरूप वेलग्रिंड क्रैश न हो सके।

इस चेक को --allow-mismatched-debuginfo=yes का उपयोग करके ओवरराइड किया जा सकता है। यह हो सकता है
तब उपयोगी होता है जब डिबगिनफ़ो और मुख्य ऑब्जेक्ट को उचित तरीके से विभाजित नहीं किया गया हो। होना
हालाँकि, इसका उपयोग करते समय सावधानी बरतें: यह सभी संगतता जाँच और वालग्रिंड को अक्षम कर देता है
यह देखा गया है कि जब मुख्य और डिबगिनफ़ो ऑब्जेक्ट मेल नहीं खाते तो क्रैश हो जाता है।

--दमन= [चूक जाना: $PREFIX/lib/valgrind/default.supp]
एक अतिरिक्त फ़ाइल निर्दिष्ट करता है जिससे दबाने के लिए त्रुटियों का विवरण पढ़ा जा सके। आप कर सकते हैं
100 अतिरिक्त दमन फ़ाइलों तक का उपयोग करें।

--जन-दमन= [चूक जाना: नहीं]
कब सेट किया गया हाँ, वेलग्रिंड दिखाई गई प्रत्येक त्रुटि के बाद रुक जाएगा और लाइन प्रिंट करेगा:

---- प्रिंट दमन? --- [रिटर्न/एन/एन/वाई/वाई/सी/सी] ----

दबाव गीला करनाया, N गीला करना or n गीला करना, वाल्ग्रिंड को मुद्रण के बिना निष्पादन जारी रखने का कारण बनता है
इस त्रुटि के लिए दमन.

दबाव Y गीला करना or y गीला करना वालग्रिंड को इस त्रुटि के लिए दमन लिखने का कारण बनता है। तुम कर सकते हो
यदि आप इसके बारे में नहीं सुनना चाहते हैं तो इसे काटें और एक दमन फ़ाइल में चिपकाएँ
भविष्य में त्रुटि.

कब सेट किया गया सब, वाल्ग्रिंड प्रत्येक रिपोर्ट की गई त्रुटि के लिए एक दमन प्रिंट करेगा
उपयोगकर्ता से पूछताछ करना.

यह विकल्प विशेष रूप से C++ प्रोग्राम के साथ उपयोगी है, क्योंकि यह प्रिंट करता है
आवश्यकतानुसार, विकृत नामों के साथ दमन।

ध्यान दें कि मुद्रित दमन यथासंभव विशिष्ट हैं। आप आम करना चाह सकते हैं
फ़ंक्शन नामों में वाइल्डकार्ड जोड़कर, और फ़्रेम-स्तर का उपयोग करके, समान बनाए रखें
वाइल्डकार्ड. वाइल्डकार्डिंग सुविधाएं शक्तिशाली होते हुए भी लचीली हैं, और थोड़ी सी क्षमता के साथ
सावधानीपूर्वक संपादन से आप संबंधित त्रुटियों के पूरे परिवार को दबाने में सक्षम हो सकते हैं
केवल कुछ दमन.

कभी-कभी दो अलग-अलग त्रुटियां एक ही दमन से दब जाती हैं, ऐसी स्थिति में
वालग्रिंड दमन को एक से अधिक बार आउटपुट करेगा, लेकिन आपको केवल एक की आवश्यकता है
अपनी सप्रेशन फ़ाइल में कॉपी करें (लेकिन एक से अधिक होने से कोई समस्या नहीं होगी)। भी,
दमन नाम इस प्रकार दिया गया है ; नाम नहीं है
वास्तव में मामला है, इसका उपयोग केवल के साथ किया जाता है -v विकल्प जो सभी प्रयुक्त दमन को प्रिंट करता है
रिकॉर्ड्स.

--इनपुट-एफडी= [चूक जाना: 0, stdin]
उपयोग करते समय --जेन-दमन = हाँ, वेलग्रिंड कीबोर्ड इनपुट को पढ़ने के लिए बंद हो जाएगा
प्रत्येक त्रुटि होने पर आपसे। डिफ़ॉल्ट रूप से यह मानक इनपुट (stdin) से पढ़ता है,
जो stdin को बंद करने वाले प्रोग्रामों के लिए समस्याग्रस्त है। यह विकल्प आपको निर्दिष्ट करने की अनुमति देता है
एक वैकल्पिक फ़ाइल डिस्क्रिप्टर जिससे इनपुट पढ़ा जा सके।

--dsymutil=नहीं|हाँ [हाँ]
यह विकल्प केवल मैक ओएस एक्स पर वालग्रिंड चलाते समय प्रासंगिक है।

Mac OS जब आपत्ति हो
डिबगिनफ़ो वाली फ़ाइलें .dylib या एक निष्पादन योग्य, डिबगिनफ़ो से जुड़ी होती हैं
अंतिम फ़ाइल में कॉपी नहीं किया गया. इसके बजाय, डिबगिनफ़ो को मैन्युअल रूप से लिंक किया जाना चाहिए
निष्पादन योग्य या .dylib पर सिस्टम-प्रदत्त उपयोगिता dsymutil चला रहा हूँ।
परिणामी संयुक्त डिबगिनफ़ो को निष्पादन योग्य या के साथ एक निर्देशिका में रखा जाता है
.dylib, लेकिन एक्सटेंशन .dSYM के साथ।

- --dsymutil=नहीं, Valgrind उन मामलों का पता लगाएगा जहां .dSYM निर्देशिका या तो है
गायब है, या मौजूद है लेकिन संबंधित निष्पादन योग्य से मेल नहीं खाता है
.dylib, संभवतः इसलिए क्योंकि यह पुराना हो चुका है। इन मामलों में, वालग्रिंड एक प्रिंट करेगा
चेतावनी संदेश लेकिन आगे कोई कार्रवाई न करें।

- --dsymutil=हाँ, Valgrind, ऐसे मामलों में, स्वचालित रूप से dsymutil चलाएगा
डिबगिनफ़ो को अद्यतित रखना आवश्यक है। सभी व्यावहारिक उद्देश्यों के लिए, यदि आप हमेशा
उपयोग --dsymutil=हाँ, तो dsymutil को मैन्युअल रूप से या भाग के रूप में चलाने की कभी कोई आवश्यकता नहीं है
आपके एप्लिकेशन के बिल्ड सिस्टम का, क्योंकि वैलग्रिंड इसे आवश्यकतानुसार चलाएगा।

Valgrind किसी भी निष्पादन योग्य या लाइब्रेरी पर dsymutil चलाने का प्रयास नहीं करेगा /यूएसआर/,
/ बिन /, / sbin /, / / /, /sw/, /System/, /Library/ या /Applications/ चूँकि dsymutil करेगा
ऐसी स्थितियों में हमेशा असफल होते हैं। यह दोनों में विफल रहता है क्योंकि इस तरह के लिए डिबगिनफ़ो
पूर्व-स्थापित सिस्टम घटक कहीं भी उपलब्ध नहीं है, और इसलिए भी कि यह उपलब्ध होगा
उन निर्देशिकाओं में लिखने के विशेषाधिकार की आवश्यकता है।

उपयोग करते समय सावधान रहें --dsymutil=हाँ, क्योंकि यह पहले से मौजूद .dSYM का कारण बनेगा
निर्देशिकाओं को चुपचाप हटा दिया जाएगा और पुनः बनाया जाएगा। यह भी ध्यान दें कि dsymutil काफी है
धीमा, कभी-कभी बहुत ज़्यादा।

--मैक्स-स्टैकफ़्रेम= [चूक जाना: 2000000]
स्टैक फ़्रेम का अधिकतम आकार. यदि स्टैक पॉइंटर इस राशि से अधिक चलता है
तब वालग्रिंड मान लेगा कि प्रोग्राम एक अलग स्टैक पर स्विच हो रहा है।

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

आपको इस विकल्प के उपयोग पर केवल तभी विचार करना चाहिए यदि वालग्रिंड का डिबग आउटपुट आपको इसके लिए निर्देशित करता है
ऐसा करो। उस स्थिति में यह आपको बताएगा कि आपको कौन सी नई सीमा निर्दिष्ट करनी चाहिए।

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

--मेन-स्टैकसाइज= [चूक जाना: उपयोग वर्तमान 'उलिमिट' मूल्य]
मुख्य थ्रेड के स्टैक का आकार निर्दिष्ट करता है।

अपने मेमोरी प्रबंधन को सरल बनाने के लिए, वालग्रिंड मुख्य के लिए सभी आवश्यक स्थान सुरक्षित रखता है
स्टार्टअप पर धागे का ढेर। इसका मतलब है कि उसे आवश्यक स्टैक आकार जानने की जरूरत है
स्टार्टअप।

डिफ़ॉल्ट रूप से, वेलग्रिंड स्टैक आकार या 16 एमबी के लिए वर्तमान "अलिमिट" मान का उपयोग करता है,
जो भी कम हो. कई मामलों में यह 8 से 16 एमबी की सीमा में स्टैक आकार देता है,
जो अधिकांश अनुप्रयोगों के लिए लगभग कभी भी ओवरफ़्लो नहीं होता है।

यदि आपको बड़े कुल स्टैक आकार की आवश्यकता है, तो उपयोग करें --मुख्य-स्टैकआकार इसे निर्दिष्ट करने के लिए. बस इसे सेट करें
जितनी आपकी आवश्यकता है, उससे कहीं अधिक जगह आरक्षित करना (अर्थात् सैकड़ों)।
आपकी आवश्यकता से अधिक मेगाबाइट) वालग्रिंड के मेमोरी एलोकेटर को बाधित करता है और कर सकता है
वालग्रिंड द्वारा उपयोग की जा सकने वाली मेमोरी की कुल मात्रा को कम करें। यह वास्तव में केवल का है
32-बिट मशीनों पर महत्व.

Linux पर, आप 2GB तक के आकार के स्टैक का अनुरोध कर सकते हैं। वालग्रिंड एक के साथ रुकेगा
यदि स्टैक आवंटित नहीं किया जा सकता है तो डायग्नोस्टिक संदेश।

--मुख्य-स्टैकआकार केवल प्रोग्राम के आरंभिक थ्रेड के स्टैक आकार को प्रभावित करता है। यह है
थ्रेड स्टैक के आकार पर कोई असर नहीं पड़ता, क्योंकि वालग्रिंड उन्हें आवंटित नहीं करता है।

आपको दोनों का उपयोग करने की आवश्यकता हो सकती है --मुख्य-स्टैकआकार और --मैक्स-स्टैकफ़्रेम साथ में। यह है
यह समझना महत्वपूर्ण है --मुख्य-स्टैकआकार अधिकतम कुल स्टैक आकार निर्धारित करता है,
whilst --मैक्स-स्टैकफ़्रेम किसी एक स्टैक फ़्रेम का सबसे बड़ा आकार निर्दिष्ट करता है। आप
पर काम करना होगा --मुख्य-स्टैकआकार अपने लिए मूल्य (आमतौर पर, यदि आपका
अनुप्रयोग सेगफ़ॉल्ट्स)। लेकिन वालग्रिंड आपको जरूरत बताएगा --मैक्स-स्टैकफ़्रेम आकार,
यदि आवश्यक है।

जैसा कि इसके विवरण में आगे चर्चा की गई है --मैक्स-स्टैकफ़्रेम, एक बड़े के लिए एक आवश्यकता
स्टैक संभावित पोर्टेबिलिटी समस्याओं का संकेत है। आपको सभी को रखने की सलाह दी जाती है
ढेर-आवंटित मेमोरी में बड़ा डेटा।

--अधिकतम-थ्रेड्स= [चूक जाना: 500]
डिफ़ॉल्ट रूप से, वालग्रिंड 500 थ्रेड तक संभाल सकता है। कभी-कभी वह संख्या भी होती है
छोटा। भिन्न सीमा प्रदान करने के लिए इस विकल्प का उपयोग करें। जैसे--अधिकतम-थ्रेड्स=3000।

मॉलोक()-संबंधित विकल्प


उन उपकरणों के लिए जो मॉलोक के अपने स्वयं के संस्करण का उपयोग करते हैं (उदाहरण के लिए मेमचेक, मैसिफ, हेलग्रिंड, डीआरडी),
निम्नलिखित विकल्प लागू होते हैं.

--संरेखण= [चूक जाना: 8 or 16, निर्भर करता है on la प्लैटफ़ॉर्म]
डिफ़ॉल्ट रूप से वालग्रिंड का malloc, रीयलोक, आदि, एक ब्लॉक लौटाएं जिसका प्रारंभिक पता है
8-बाइट संरेखित या 16-बाइट संरेखित (मान प्लेटफ़ॉर्म पर निर्भर करता है और मेल खाता है
प्लेटफ़ॉर्म डिफ़ॉल्ट)। यह विकल्प आपको एक अलग संरेखण निर्दिष्ट करने की अनुमति देता है।
आपूर्ति किया गया मान डिफ़ॉल्ट से अधिक या उसके बराबर, उससे कम या उसके बराबर होना चाहिए
4096, और दो की घात होनी चाहिए।

--रेडज़ोन-आकार= [चूक जाना: निर्भर करता है on la औजार]
वालग्रिंड का मॉलोक, रीयलोक, आदि, प्रत्येक ढेर ब्लॉक से पहले और बाद में पैडिंग ब्लॉक जोड़ें
चलाए जा रहे कार्यक्रम द्वारा आवंटित किया गया। ऐसे पैडिंग ब्लॉक को रेडज़ोन कहा जाता है।
रेडज़ोन आकार के लिए डिफ़ॉल्ट मान उपकरण पर निर्भर करता है। उदाहरण के लिए, मेमचेक और जोड़ता है
क्लाइंट द्वारा आवंटित प्रत्येक ब्लॉक से पहले और बाद में न्यूनतम 16 बाइट्स की सुरक्षा करता है।
यह इसे 16 बाइट्स तक के ब्लॉक अंडररन या ओवररन का पता लगाने की अनुमति देता है।

रेडज़ोन का आकार बढ़ने से बड़ी दूरी की अधिकता का पता लगाना संभव हो जाता है,
लेकिन वालग्रिंड द्वारा उपयोग की जाने वाली मेमोरी की मात्रा बढ़ जाती है। रेडज़ोन का आकार घटने से होगा
वालग्रिंड के लिए आवश्यक मेमोरी को कम करता है लेकिन पता लगाने की संभावना को भी कम करता है
ओवर/अंडररन, इसलिए अनुशंसित नहीं है।

असामान्य विकल्प


ये विकल्प सभी उपकरणों पर लागू होते हैं, क्योंकि वे वालग्रिंड की कुछ अस्पष्ट कार्यप्रणाली को प्रभावित करते हैं
मुख्य। अधिकांश लोगों को उनका उपयोग करने की आवश्यकता नहीं होगी.

--smc-चेक= [चूक जाना: सभी-गैर-फ़ाइल एसटी x86/amd64/s390x,
धुआँरा एसटी अन्य मेहराब]
यह विकल्प वालग्रिंड द्वारा स्व-संशोधित कोड का पता लगाने को नियंत्रित करता है। अगर कोई चेकिंग नहीं है
हो गया, जब कोई प्रोग्राम कुछ कोड निष्पादित करता है, तो उसे नए कोड के साथ अधिलेखित कर देता है, और
नए कोड को निष्पादित करता है, Valgrind इसके लिए किए गए अनुवादों को निष्पादित करना जारी रखेगा
पुराना कोड. इससे गलत व्यवहार और/या क्रैश होने की संभावना होगी।

"आधुनिक" आर्किटेक्चर के लिए - कुछ भी जो x86, amd64 या s390x नहीं है - डिफ़ॉल्ट
is धुआँरा. ऐसा इसलिए है क्योंकि एक सही प्रोग्राम को पुनः स्थापित करने के लिए स्पष्ट कार्रवाई करनी चाहिए
कोड संशोधन के बाद डीआई कैश सुसंगतता। वालग्रिंड इस तरह का निरीक्षण और सम्मान करता है
क्रियाएँ, जिसके परिणामस्वरूप स्व-संशोधित कोड को शून्य के साथ पारदर्शी रूप से नियंत्रित किया जाता है
ज्यादा ख़र्च।

x86, amd64 और s390x के लिए, प्रोग्राम को हार्डवेयर को सूचित करने की आवश्यकता नहीं है
आवश्यक DI सुसंगतता समन्वयन। इसलिए डिफ़ॉल्ट है सभी-गैर-फ़ाइल, जो कवर करता है
अज्ञात (गैर-फ़ाइल-समर्थित) mmap'd क्षेत्र में कोड उत्पन्न करने का सामान्य मामला।

चार उपलब्ध सेटिंग्स के अर्थ इस प्रकार हैं. नहीं मिलना (कोई नहीं),
स्टैक पर स्व-संशोधित कोड का पता लगाएं (जिसका उपयोग जीसीसी द्वारा नेस्टेड को लागू करने के लिए किया जाता है)।
कार्य) (धुआँरा), हर जगह स्व-संशोधित कोड का पता लगाएं (सब), और पता लगाएं
फ़ाइल-समर्थित मैपिंग को छोड़कर हर जगह स्वयं-संशोधित कोड (सभी-गैर-फ़ाइल).

के साथ चल रहा है सब वालग्रिंड को काफ़ी धीमा कर देगा। साथ चल रहा है कोई नहीं शायद ही कभी होगा
चीज़ों की गति बढ़ाएँ, क्योंकि अधिकांश प्रोग्रामों में बहुत कम कोड गतिशील रूप से उत्पन्न होता है।
RSI VALGRIND_DISCARD_अनुवाद क्लाइंट अनुरोध का एक विकल्प है --smc-चेक=सभी
और --smc-चेक=सभी-गैर-फ़ाइल इसके लिए अधिक प्रोग्रामर प्रयास की आवश्यकता होती है लेकिन वालग्रिंड इसकी अनुमति देता है
अपने प्रोग्राम को तेजी से चलाने के लिए, सटीक रूप से यह बताकर कि अनुवाद की आवश्यकता कब है
पुनः बनाया गया.

--smc-चेक=सभी-गैर-फ़ाइल का एक सस्ता लेकिन अधिक सीमित संस्करण प्रदान करता है
--smc-चेक=सभी. यह ऐसे किसी भी अनुवाद के लिए चेक जोड़ता है जो इससे उत्पन्न नहीं हुआ है
फ़ाइल-समर्थित मेमोरी मैपिंग। विशिष्ट अनुप्रयोग जो कोड उत्पन्न करते हैं, उदाहरण के लिए JITs
वेब ब्राउज़र में, अज्ञात एमएमएप्ड क्षेत्रों में कोड उत्पन्न करते हैं, जबकि "निश्चित" कोड
ब्राउज़र हमेशा फ़ाइल-समर्थित मैपिंग में रहता है। --smc-चेक=सभी-गैर-फ़ाइल लेता है
इस अवलोकन का लाभ यह है कि, जाँच के ओवरहेड को कोड तक सीमित कर दिया गया है
जेआईटी उत्पन्न होने की संभावना है।

--पढ़ें-इनलाइन-जानकारी= [चूक जाना: देखना नीचे]
सक्षम होने पर, Valgrind DWARF3 से इनलाइन फ़ंक्शन कॉल के बारे में जानकारी पढ़ेगा
दोषमार्जन सूचना। यह वालग्रिंड स्टार्टअप को धीमा कर देता है और इसे अधिक मेमोरी (आमतौर पर) का उपयोग करने देता है
कोड का प्रत्येक पंक्तिबद्ध टुकड़ा, 6 शब्द और फ़ंक्शन नाम के लिए स्थान), लेकिन इसका परिणाम होता है
अधिक वर्णनात्मक स्टैकट्रैस में। 3.10.0 रिलीज़ के लिए, यह कार्यक्षमता सक्षम है
डिफ़ॉल्ट रूप से केवल लिनक्स, एंड्रॉइड और सोलारिस लक्ष्यों के लिए और केवल टूल के लिए
मेमचेक, हेलग्रिंड और डीआरडी। यहां कुछ स्टैकट्रैस का उदाहरण दिया गया है
--पढ़ें-इनलाइन-जानकारी=नहीं:

==15380== सशर्त छलांग या चाल अप्रारंभीकृत मान पर निर्भर करती है
==15380== 0x80484EA पर: मुख्य (inlinfo.c:6)
== 15380 ==
==15380== सशर्त छलांग या चाल अप्रारंभीकृत मान पर निर्भर करती है
==15380== 0x8048550 पर: fun_noninline (inlinfo.c:6)
==15380== 0x804850ई द्वारा: मुख्य (inlinfo.c:34)
== 15380 ==
==15380== सशर्त छलांग या चाल अप्रारंभीकृत मान पर निर्भर करती है
==15380== 0x8048520 पर: मुख्य (inlinfo.c:6)

और यहाँ भी वही त्रुटियाँ हैं --पढ़ें-इनलाइन-जानकारी=हाँ:

==15377== सशर्त छलांग या चाल अप्रारंभीकृत मान पर निर्भर करती है
==15377== 0x80484EA पर: fun_d (inlinfo.c:6)
==15377== 0x80484EA द्वारा: fun_c (inlinfo.c:14)
==15377== 0x80484EA द्वारा: fun_b (inlinfo.c:20)
==15377== 0x80484EA द्वारा: fun_a (inlinfo.c:26)
==15377== 0x80484EA द्वारा: मुख्य (inlinfo.c:33)
== 15377 ==
==15377== सशर्त छलांग या चाल अप्रारंभीकृत मान पर निर्भर करती है
==15377== 0x8048550 पर: fun_d (inlinfo.c:6)
==15377== 0x8048550 द्वारा: fun_noninline (inlinfo.c:41)
==15377== 0x804850ई द्वारा: मुख्य (inlinfo.c:34)
== 15377 ==
==15377== सशर्त छलांग या चाल अप्रारंभीकृत मान पर निर्भर करती है
==15377== 0x8048520 पर: fun_d (inlinfo.c:6)
==15377== 0x8048520 द्वारा: मुख्य (inlinfo.c:35)

--पढ़ें-var-info= [चूक जाना: नहीं]
सक्षम होने पर, वालग्रिंड चर प्रकारों और स्थानों के बारे में जानकारी पढ़ेगा
DWARF3 डिबग जानकारी। यह वालग्रिंड स्टार्टअप को काफी धीमा कर देता है और इसका उपयोग करता है
काफी अधिक मेमोरी, लेकिन उन उपकरणों के लिए जो इसका लाभ उठा सकते हैं (मेमचेक,
हेलग्रिंड, डीआरडी) के परिणामस्वरूप अधिक सटीक त्रुटि संदेश प्राप्त हो सकते हैं। उदाहरण के लिए, यहाँ हैं
मेमचेक द्वारा जारी कुछ मानक त्रुटियाँ:

==15363== क्लाइंट चेक अनुरोध के दौरान अप्रारंभीकृत बाइट मिलीं
==15363== 0x80484ए9 पर: क्रोक (varinfo1.c:28)
==15363== 0x8048544 द्वारा: मुख्य (varinfo1.c:55)
==15363== पता 0x80497f7 डेटा प्रतीक "global_i7" के अंदर 2 बाइट्स है
== 15363 ==
==15363== क्लाइंट चेक अनुरोध के दौरान अप्रारंभीकृत बाइट मिलीं
==15363== 0x80484ए9 पर: क्रोक (varinfo1.c:28)
==15363== 0x8048550 द्वारा: मुख्य (varinfo1.c:56)
==15363== पता 0xbea0d0cc थ्रेड 1 के स्टैक पर है
==15363== फ्रेम #1 में, मुख्य द्वारा बनाया गया (varinfo1.c:45)

और यहाँ भी वही त्रुटियाँ हैं --पढ़ें-वर-जानकारी=हाँ:

==15370== क्लाइंट चेक अनुरोध के दौरान अप्रारंभीकृत बाइट मिलीं
==15370== 0x80484ए9 पर: क्रोक (varinfo1.c:28)
==15370== 0x8048544 द्वारा: मुख्य (varinfo1.c:55)
==15370== स्थान 0x80497f7 ग्लोबल_आई0[2] के अंदर 7 बाइट्स है,
==15370== एक वैश्विक चर varinfo1.c:41 पर घोषित किया गया
== 15370 ==
==15370== क्लाइंट चेक अनुरोध के दौरान अप्रारंभीकृत बाइट मिलीं
==15370== 0x80484ए9 पर: क्रोक (varinfo1.c:28)
==15370== 0x8048550 द्वारा: मुख्य (varinfo1.c:56)
==15370== स्थान 0xbeb4a0cc स्थानीय संस्करण "स्थानीय" के अंदर 0 बाइट्स है
==15370== varinfo1.c:46 पर घोषित, थ्रेड 1 के फ्रेम #1 में

--vgdb-मतदान= [चूक जाना: 5000]
अपने मुख्य लूप के भाग के रूप में, वालग्रिंड अनुसूचक यह जाँचने के लिए मतदान करेगा कि क्या कोई गतिविधि है
(जैसे कि कोई बाहरी कमांड या जीडीबी से कुछ इनपुट) को जीडीबीसर्वर द्वारा नियंत्रित किया जाना चाहिए।
यह गतिविधि सर्वेक्षण बुनियादी ब्लॉकों की दी गई संख्या (या) चलाने के बाद किया जाएगा
बुनियादी ब्लॉकों की दी गई संख्या से थोड़ा अधिक)। यह पोल काफी सस्ता है इसलिए
डिफ़ॉल्ट मान अपेक्षाकृत कम सेट किया गया है. यदि vgdb हो तो आप इस मान को और भी कम कर सकते हैं
यदि सभी थ्रेड (अधिकांश) हैं तो वालग्रिंड को बाधित करने के लिए पीट्रेस सिस्टम कॉल का उपयोग नहीं किया जा सकता है
समय) सिस्टम कॉल में अवरुद्ध है।

--vgdb-छाया-रजिस्टर=नहीं|हाँ [चूक जाना: नहीं]
सक्रिय होने पर, gdbserver Valgrind छाया रजिस्टरों को GDB पर प्रदर्शित करेगा। इस के साथ,
जीडीबी का उपयोग करके वालग्रिंड छाया रजिस्टरों के मूल्य की जांच या बदलाव किया जा सकता है।
एक्सपोज़िंग शैडो रजिस्टर केवल GDB संस्करण 7.1 या उसके बाद के संस्करण के साथ काम करता है।

--vgdb-उपसर्ग= [चूक जाना: /tmp/vgdb-पाइप]
Gdb/vgdb के साथ संचार करने के लिए, Valgrind gdbserver 3 फ़ाइलें (2 FIFO नामित) बनाता है
और एक एमएमएपी साझा मेमोरी फ़ाइल)। उपसर्ग विकल्प निर्देशिका और उपसर्ग को नियंत्रित करता है
इन फ़ाइलों के निर्माण के लिए.

--run-libc-freeres= [चूक जाना: हां]
यह विकल्प केवल Linux पर Valgrind चलाते समय प्रासंगिक है।

जीएनयू सी लाइब्रेरी (लिबास), जिसका उपयोग सभी प्रोग्रामों द्वारा किया जाता है, के लिए मेमोरी आवंटित की जा सकती है
इसके अपने उपयोग हैं। आमतौर पर प्रोग्राम समाप्त होने पर उस मेमोरी को खाली करने की जहमत नहीं उठाई जाती-
इसका कोई मतलब नहीं होगा, क्योंकि लिनक्स कर्नेल सभी प्रक्रिया संसाधनों को पुनः प्राप्त कर लेता है
प्रक्रिया वैसे भी समाप्त हो जाती है, इसलिए यह चीज़ों को धीमा कर देगी।

ग्लिबैक लेखकों ने महसूस किया कि यह व्यवहार वालग्रिंड जैसे लीक चेकर्स का कारण बनता है,
ग्लिबैक में लीक की झूठी रिपोर्ट करना, जब लीक की जांच निकास पर की जाती है। बचने के लिए
यह, उन्होंने एक रूटीन प्रदान किया जिसे कहा जाता है __libc_freeres विशेष रूप से ग्लिबैक रिलीज़ करने के लिए
उसके द्वारा आवंटित सारी मेमोरी। इसलिए मेमचेक चलाने का प्रयास करता है __libc_freeres बाहर निकलने पर.

दुर्भाग्य से, glibc के कुछ बहुत पुराने संस्करणों में, __libc_freeres पर्याप्त है
विभाजन दोष उत्पन्न करने वाली छोटी गाड़ी। यह Red Hat 7.1 पर विशेष रूप से ध्यान देने योग्य था।
इसलिए यह विकल्प रन को रोकने के लिए प्रदान किया गया है __libc_freeres. यदि आपके
ऐसा लगता है कि प्रोग्राम वालग्रिंड पर ठीक से चल रहा है, लेकिन बाहर निकलने पर सेगफ़ॉल्ट्स हैं, आपको ऐसा लग सकता है
--run-libc-freeres=नहीं उसे ठीक करता है, हालाँकि संभवतः झूठी रिपोर्टिंग की कीमत पर
libc.so में जगह लीक हो गई।

--सिम-संकेत=संकेत1,संकेत2,...
वालग्रिंड को विविध संकेत पास करें जो सिम्युलेटेड व्यवहार को थोड़ा संशोधित करता है
गैर-मानक या खतरनाक तरीके, संभवतः अजीब सुविधाओं के अनुकरण में मदद करने के लिए। द्वारा
डिफ़ॉल्ट कोई संकेत सक्षम नहीं हैं. सावधानी से प्रयोग करें! वर्तमान में ज्ञात संकेत हैं:

· लैक्स-ioctls: ioctl को संभालने में बहुत ढीले रहें; एकमात्र धारणा यह है कि आकार
सही है। लिखते समय पूर्ण बफ़र आरंभ करने की आवश्यकता नहीं है।
इसके बिना, बड़ी संख्या में अजीब ioctl वाले कुछ डिवाइस ड्राइवरों का उपयोग करना
आदेश बहुत थकाऊ हो जाते हैं।

· फ़्यूज़-संगत: कुछ सिस्टम कॉल के लिए विशेष हैंडलिंग सक्षम करें जो ब्लॉक हो सकती हैं
FUSE फ़ाइल-सिस्टम में। वैलग्रिंड को ए पर चलाते समय यह आवश्यक हो सकता है
बहु-थ्रेडेड प्रोग्राम जो FUSE फ़ाइल-सिस्टम को प्रबंधित करने के लिए एक थ्रेड का उपयोग करता है
उस फ़ाइल-सिस्टम तक पहुँचने के लिए एक और थ्रेड।

· सक्षम-बाहरी: जब प्रोग्राम चलाया जा रहा हो तो आवश्यक कुछ विशेष जादू को सक्षम करें
स्वयं वालग्रिंड।

· नो-इनर-उपसर्ग: किसी उपसर्ग को प्रिंट करना अक्षम करें > प्रत्येक stdout या stderr के सामने
आंतरिक वालग्रिंड में आउटपुट लाइन बाहरी वालग्रिंड द्वारा चलाई जा रही है। यह उपयोगी है
बाहरी/आंतरिक सेटअप में वैलग्रिंड रिग्रेशन परीक्षण चलाते समय। ध्यान दें कि
उपसर्ग > हमेशा आंतरिक डिबग लॉगिंग लाइनों के सामने मुद्रित किया जाएगा।

· नो-एनपीटीएल-पीथ्रेड-स्टैककैश: यह संकेत केवल वालग्रिंड चालू करते समय ही प्रासंगिक है
लिनक्स।

जीएनयू ग्लिबक पाथ्रेड लाइब्रेरी (libpthread.so), जिसका उपयोग pthread प्रोग्राम द्वारा किया जाता है,
पाथ्रेड स्टैक का कैश बनाए रखता है। जब कोई पाथ्रेड समाप्त हो जाता है, तो मेमोरी का उपयोग किया जाता है
पाथ्रेड स्टैक और कुछ थ्रेड के लिए स्थानीय भंडारण संबंधी डेटा संरचना नहीं है
हमेशा सीधे जारी किया जाता है. यह मेमोरी कैश में रखी जाती है (एक निश्चित आकार तक),
और यदि कोई नया थ्रेड शुरू किया जाता है तो इसका पुन: उपयोग किया जाता है।

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

मेमचेक टूल का उपयोग करते समय, कैश को अक्षम करने से ग्लिबैक द्वारा उपयोग की जाने वाली मेमोरी सुनिश्चित हो जाती है
थ्रेड समाप्त होने पर __थ्रेड वेरिएबल्स को संभालने के लिए सीधे जारी किया जाता है।

नोट: वैलग्रिंड ग्लिबैक स्टैक के कुछ आंतरिक ज्ञान का उपयोग करके कैश को अक्षम कर देता है
कैश कार्यान्वयन और पाथ्रेड की डिबग जानकारी की जांच करके
पुस्तकालय। इस प्रकार यह तकनीक कुछ हद तक नाजुक है और सभी ग्लिबैक के लिए काम नहीं कर सकती है
संस्करण. इसका विभिन्न ग्लिबैक संस्करणों (जैसे) के साथ सफलतापूर्वक परीक्षण किया गया है
2.11, 2.16, 2.18) विभिन्न प्लेटफार्मों पर।

· ढीले दरवाजे: (केवल सोलारिस) डोर सिस्कल को संभालने में बहुत ढिलाई बरतें
अपरिचित दरवाज़ा फ़ाइल विवरणक। पूर्ण बफ़र की आवश्यकता नहीं है
लिखते समय प्रारंभ किया गया। इसके बिना, प्रोग्राम उपयोग कर रहे हैं libdoor(3एलआईबी) कार्यक्षमता
पूरी तरह से मालिकाना शब्दार्थ के साथ बड़ी संख्या में गलत सकारात्मक रिपोर्ट हो सकती है।

--निष्पक्ष-अनुसूचित= [चूक जाना: नहीं]
RSI --निष्पक्ष-अनुसूचित विकल्प वेलग्रिंड द्वारा क्रमबद्ध करने के लिए उपयोग किए जाने वाले लॉकिंग तंत्र को नियंत्रित करता है
थ्रेड निष्पादन. लॉकिंग तंत्र थ्रेड्स को शेड्यूल करने के तरीके को नियंत्रित करता है,
और अलग-अलग सेटिंग्स निष्पक्षता और प्रदर्शन के बीच अलग-अलग समझौता करती हैं। के लिए
वालग्रिंड थ्रेड क्रमांकन योजना और इसके प्रभाव के बारे में अधिक जानकारी
प्रदर्शन और थ्रेड शेड्यूलिंग, शेड्यूलिंग और मल्टी-थ्रेड प्रदर्शन देखें।

· मूल्य --उचित-निर्धारित=हाँ एक निष्पक्ष अनुसूचक को सक्रिय करता है। संक्षेप में, यदि एकाधिक
थ्रेड चलने के लिए तैयार हैं, थ्रेड को राउंड रॉबिन फैशन में शेड्यूल किया जाएगा।
यह तंत्र सभी प्लेटफ़ॉर्म या लिनक्स संस्करणों पर उपलब्ध नहीं है। अगर नहीं
उपलब्ध है, उपयोग कर रहे हैं --उचित-निर्धारित=हाँ Valgrind को एक त्रुटि के साथ समाप्त करने का कारण बनेगा।

यदि आप चला रहे हैं तो आप पाएंगे कि यह सेटिंग समग्र प्रतिक्रियाशीलता में सुधार करती है
इंटरैक्टिव मल्टीथ्रेडेड प्रोग्राम, उदाहरण के लिए एक वेब ब्राउज़र, वेलग्रिंड पर।

· मूल्य --फेयर-शेड्यूल = प्रयास करें प्लेटफ़ॉर्म पर उपलब्ध होने पर निष्पक्ष शेड्यूलिंग सक्रिय करता है।
अन्यथा, यह स्वचालित रूप से वापस गिर जाएगा --उचित-अनुसूचित=नहीं.

· मूल्य --उचित-अनुसूचित=नहीं एक शेड्यूलर को सक्रिय करता है जो निष्पक्षता की गारंटी नहीं देता है
चलने के लिए तैयार धागों के बीच, लेकिन जो सामान्य तौर पर उच्चतम प्रदर्शन देता है।

--कर्नेल-वेरिएंट=वेरिएंट1,वेरिएंट2,...
डिफ़ॉल्ट कर्नेल के छोटे वेरिएंट से उत्पन्न होने वाली सिस्टम कॉल और ioctls को संभालें
यह मंच. यह हैक किए गए कर्नेल पर या कर्नेल मॉड्यूल के साथ चलने के लिए उपयोगी है
उदाहरण के लिए, जो गैर-मानक ioctls का समर्थन करते हैं। सावधानी से प्रयोग करें। यदि आप नहीं करते हैं
समझें कि यह विकल्प क्या करता है तो आपको लगभग निश्चित रूप से इसकी आवश्यकता नहीं होगी। वर्तमान में
ज्ञात वेरिएंट हैं:

· बीप्रोक: का समर्थन sys_broc x86 पर सिस्टम कॉल। यह BProc पर चलने के लिए है,
जो मानक लिनक्स का एक छोटा संस्करण है जिसे कभी-कभी निर्माण के लिए उपयोग किया जाता है
समूहों।

· एंड्रॉइड-नो-एचडब्ल्यू-टीएलएस: एआरएम के लिए एंड्रॉइड एमुलेटर के कुछ संस्करण प्रदान नहीं करते हैं
हार्डवेयर टीएलएस (थ्रेड-लोकल स्टेट) रजिस्टर, और वेलग्रिंड स्टार्टअप पर क्रैश हो जाता है। उपयोग
टीएलएस के लिए सॉफ़्टवेयर समर्थन का चयन करने के लिए यह संस्करण।

· android-gpu-sgx5xx: मालिकाना ioctls के संचालन में सहायता के लिए इसका उपयोग करें
Android उपकरणों पर GPU की PowerVR SGX 5XX श्रृंखला। इसका चयन न करने पर ऐसा नहीं होता
स्थिरता की समस्याएँ पैदा करता है, लेकिन इसके बाद मेमचेक झूठी त्रुटियों की रिपोर्ट कर सकता है
प्रोग्राम GPU-विशिष्ट ioctls निष्पादित करता है।

· android-gpu-adreno3xx: इसी तरह, स्वामित्व के प्रबंधन में सहायता के लिए इसका उपयोग करें
एंड्रॉइड डिवाइस पर क्वालकॉम एड्रेनो 3XX श्रृंखला के जीपीयू के लिए ioctls।

--मर्ज-पुनरावर्ती-फ़्रेम= [चूक जाना: 0]
कुछ पुनरावर्ती एल्गोरिदम, उदाहरण के लिए संतुलित बाइनरी ट्री कार्यान्वयन, बनाते हैं
कई अलग-अलग स्टैक ट्रेस, प्रत्येक में कॉल के चक्र शामिल हैं। एक चक्र को इस प्रकार परिभाषित किया गया है
दो समान प्रोग्राम काउंटर मान शून्य या अधिक अन्य प्रोग्राम काउंटर द्वारा अलग किए गए हैं
मूल्य. इन सभी स्टैक ट्रेस को संग्रहीत करने के लिए वेलग्रिंड बहुत अधिक मेमोरी का उपयोग कर सकता है। यह है
मेमोरी का खराब उपयोग, यह देखते हुए कि ऐसे स्टैक ट्रेस में बार-बार अरुचिकर सामग्री होती है
फ़ंक्शन जैसी अधिक रोचक जानकारी के बजाय पुनरावर्ती कॉल
पुनरावर्ती कॉल आरंभ की.

विकल्प --मर्ज-पुनरावर्ती-फ़्रेम= वालग्रिंड को पता लगाने और विलय करने का निर्देश देता है
तक के आकार वाले पुनरावर्ती कॉल चक्र तख्ते. जब ऐसा कोई चक्र है
पता चला, वालग्रिंड चक्र को एक अद्वितीय प्रोग्राम काउंटर के रूप में स्टैक ट्रेस में रिकॉर्ड करता है।

मान 0 (डिफ़ॉल्ट) कोई पुनरावर्ती कॉल विलय का कारण नहीं बनता है। 1 का मान कारण होगा
सरल पुनरावर्ती एल्गोरिदम के स्टैक निशान (उदाहरण के लिए, एक फैक्टोरियल कार्यान्वयन)
ढह जाना. उत्पादित स्टैक ट्रेस को संक्षिप्त करने के लिए आमतौर पर 2 के मान की आवश्यकता होगी
पुनरावर्ती एल्गोरिदम जैसे बाइनरी ट्री, त्वरित सॉर्ट, आदि द्वारा उच्च मान हो सकते हैं
अधिक जटिल पुनरावर्ती एल्गोरिदम के लिए आवश्यक।

नोट: पुनरावर्ती कॉल का पता प्रोग्राम काउंटर मानों के विश्लेषण से लगाया जाता है। वे नहीं हैं
फ़ंक्शन नामों को देखकर पता लगाया गया।

--नम-ट्रांसटैब-सेक्टर= [चूक जाना: 6 एसटी एंड्रॉयड प्लेटफार्मों, 16 एसटी सब अन्य]
वालग्रिंड आपके प्रोग्राम के मशीन कोड को छोटे-छोटे टुकड़ों में अनुवादित और यंत्रीकृत करता है
(बुनियादी ब्लॉक)। अनुवादों को एक अनुवाद कैश में संग्रहीत किया जाता है जिसे विभाजित किया गया है
कई खंडों (सेक्टरों) में। यदि कैश भरा हुआ है, तो वह सेक्टर जिसमें शामिल है
सबसे पुराने अनुवादों को खाली कर पुन: उपयोग किया जाता है। अगर इन पुराने अनुवादों की दोबारा जरूरत पड़े तो
वालग्रिंड को संबंधित मशीन कोड का दोबारा अनुवाद और पुन:इंस्ट्रूमेंट करना होगा, जो कि है
महँगा। यदि किसी प्रोग्राम का "निष्पादित निर्देश" कार्य सेट बड़ा है, तो बढ़ रहा है
क्षेत्रों की संख्या कम करके प्रदर्शन में सुधार किया जा सकता है
पुनः अनुवाद की आवश्यकता है. मांग के आधार पर सेक्टरों का आवंटन किया जाता है। एक बार आवंटित हो जाने पर, एक सेक्टर ऐसा कर सकता है
कभी भी मुक्त नहीं होता है, और उपकरण और मूल्य के आधार पर काफी जगह घेरता है
of --औसत-ट्रांसटैब-प्रविष्टि-आकार (मेमचेक के लिए प्रति सेक्टर लगभग 40 एमबी)। विकल्प का प्रयोग करें
--आँकड़े=हाँ किसी सेक्टर द्वारा उपयोग की जाने वाली मेमोरी के बारे में सटीक जानकारी प्राप्त करने के लिए
क्षेत्रों का आवंटन और पुनर्चक्रण।

--avg-ट्रांसटैब-एंट्री-आकार = [चूक जाना: 0, अर्थ उपयोग साधन बशर्ते चूक जाना]
अनुवादित मूल ब्लॉक का औसत आकार. इस औसत आकार का उपयोग आयाम के लिए किया जाता है
एक सेक्टर का आकार. प्रत्येक उपकरण उपयोग के लिए एक डिफ़ॉल्ट मान प्रदान करता है। यदि यह डिफ़ॉल्ट मान
बहुत छोटा है, अनुवाद क्षेत्र बहुत जल्दी भर जाएंगे। यदि यह डिफ़ॉल्ट
मान बहुत बड़ा है, अनुवाद क्षेत्र की मेमोरी का एक महत्वपूर्ण हिस्सा अप्रयुक्त हो जाएगा।
ध्यान दें कि बुनियादी ब्लॉक अनुवाद का औसत आकार उपकरण और क्षमता पर निर्भर करता है
उपकरण विकल्पों पर निर्भर रहें। उदाहरण के लिए, मेमचेक विकल्प --ट्रैक-उत्पत्ति=हाँ बढ़ जाती है
मूल ब्लॉक अनुवाद का आकार. उपयोग --औसत-ट्रांसटैब-प्रविष्टि-आकार को ट्यून करने के लिए
क्षेत्रों का आकार, या तो स्मृति प्राप्त करने के लिए या बहुत अधिक पुनर्अनुवाद से बचने के लिए।

--aspace-minaddr= [चूक जाना: निर्भर करता है on la प्लैटफ़ॉर्म]
कुछ सिस्टम लाइब्रेरीज़ के साथ संभावित टकराव से बचने के लिए, वालग्रिंड इसका उपयोग नहीं करता है
नीचे पता स्थान --aspace-minaddr मूल्य, इसे पुस्तकालय के मामले में आरक्षित रखना
विशेष रूप से इस क्षेत्र में स्मृति का अनुरोध करता है। तो, कुछ "निराशावादी" मूल्य का अनुमान लगाया जाता है
प्लेटफ़ॉर्म के आधार पर वालग्रिंड द्वारा। लिनक्स पर, डिफ़ॉल्ट रूप से, वालग्रिंड इसका उपयोग करने से बचता है
पहले 64एमबी, भले ही आम तौर पर इस पूरे क्षेत्र में कोई संघर्ष न हो। आप उपयोग कर सकते हैं
विकल्प --aspace-minaddr आपकी याददाश्त के भूखे एप्लिकेशन को लाभ पहुंचाने के लिए
इस निचली मेमोरी का अधिक. दूसरी ओर, यदि आप किसी संघर्ष का सामना करते हैं, तो यह बढ़ता जा रहा है
aspace-minaddr मान इसे हल कर सकता है। संघर्ष आम तौर पर स्वयं प्रकट होंगे
पता स्थान की निम्न श्रेणी में mmap विफलताएँ। प्रदान किया गया पता पेज होना चाहिए
संरेखित और 0x1000 (4KB) के बराबर या बड़ा होना चाहिए। अपने पर डिफ़ॉल्ट मान खोजने के लिए
प्लेटफ़ॉर्म, कुछ ऐसा करें जैसे valgrind -d -d date 2>&1 | grep -i minaddr. मान
0x10000 (64KB) से कम कुछ वितरणों में समस्याएँ पैदा करने के लिए जाना जाता है।

--वालग्रिंड-स्टैकसाइज= [चूक जाना: 1एमबी]
प्रत्येक थ्रेड के लिए, वालग्रिंड को अपने स्वयं के 'निजी' स्टैक की आवश्यकता होती है। इनके लिए डिफ़ॉल्ट आकार
ढेर बड़े पैमाने पर आयामित होते हैं, और इसलिए ज्यादातर मामलों में पर्याप्त होना चाहिए। मामले में
आकार बहुत छोटा है, वालग्रिंड सेगफॉल्ट करेगा। सेगफॉल्टिंग से पहले, एक चेतावनी हो सकती है
सीमा के करीब पहुंचने पर वालग्रिंड द्वारा उत्पादित।

विकल्प का प्रयोग करें --वालग्रिंड-स्टैकसाइज यदि ऐसी (असंभावित) चेतावनी उत्पन्न होती है, या
विभाजन उल्लंघन के कारण वालग्रिंड की मृत्यु हो जाती है। इस तरह के विभाजन का उल्लंघन किया गया है
विशाल C++ प्रतीकों को अलग करते समय देखा गया।

यदि आपका एप्लिकेशन कई थ्रेड्स का उपयोग करता है और उसे बहुत अधिक मेमोरी की आवश्यकता है, तो आप कुछ प्राप्त कर सकते हैं
विकल्प का उपयोग करके इन वालग्रिंड स्टैक के आकार को कम करके मेमोरी
--वालग्रिंड-स्टैकसाइज.

--शो-एमचेतावनी= [चूक जाना: नहीं]
सक्षम होने पर, वालग्रिंड कुछ मामलों में अपने सीपीयू अनुकरण के बारे में चेतावनियां जारी करेगा।
ये आमतौर पर दिलचस्प नहीं होते.

--require-text-प्रतीक =: sonamepatt: fnnamepatt
जब एक साझा वस्तु जिसका सोनाम मेल खाता है सोनामपट्ट प्रक्रिया में लोड किया गया है,
इसके द्वारा निर्यात किए जाने वाले सभी पाठ प्रतीकों की जाँच करें। यदि इनमें से कोई भी मेल नहीं खाता है fnnamepatt, एक प्रिंट करें
त्रुटि संदेश और रन छोड़ें। इससे यह सुनिश्चित करना संभव हो जाता है कि रन चलता है
तब तक जारी न रखें जब तक किसी दिए गए साझा ऑब्जेक्ट में कोई विशेष फ़ंक्शन नाम न हो।

दोनों सोनामपट्ट और fnnamepatt सामान्य का उपयोग करके लिखा जा सकता है ? और * वाइल्डकार्ड. के लिए
उदाहरण: ":*libc.so*:foo?bar". आप अलग करने के लिए कोलन के अलावा अन्य वर्णों का उपयोग कर सकते हैं
दो पैटर्न. केवल पहला अक्षर और विभाजक ही महत्वपूर्ण है
चरित्र एक जैसे हैं. उदाहरण के लिए उपरोक्त उदाहरण भी लिखा जा सकता है
"Q*libc.so*Qfoo?bar". विभिन्न
--आवश्यकता-पाठ-प्रतीक झंडे की अनुमति है, जिस स्थिति में साझा की गई वस्तुएं लोड की जाती हैं
इस प्रक्रिया में उन सभी के खिलाफ जाँच की जाएगी।

इसका उद्देश्य चिह्नित पुस्तकालयों के विश्वसनीय उपयोग का समर्थन करना है। उदाहरण के लिए,
मान लीजिए हमारे पास जीसीसी का एक संस्करण है libgomp.so जिसे चिन्हित कर लिया गया है
हेलग्रिंड का समर्थन करने के लिए टिप्पणियाँ। गलत लोड करना बहुत आसान और भ्रमित करने वाला है,
अघोषित libgomp.so आवेदन में. तो विचार यह है: इसमें एक टेक्स्ट प्रतीक जोड़ें
उदाहरण के लिए, चिह्नित लाइब्रेरी एनोटेटेड_फॉर_हेलग्रिंड_3_6, और फिर झंडा दे दो
--require-text-symbol=:*libgomp*so*:annotated_for_helgrind_3_6 ताकि जब libgomp.so
लोड किया गया है, वेलग्रिंड अपनी प्रतीक तालिका को स्कैन करता है, और यदि प्रतीक मौजूद नहीं है तो रन होता है
बिना चिह्नित लाइब्रेरी के साथ चुपचाप जारी रखने के बजाय, निरस्त कर दिया गया। ध्यान दें कि आप
गोले को ऊपर की ओर फैलने से रोकने के लिए पूरे ध्वज को उद्धरण चिह्नों में रखना चाहिए * और ?
वाइल्डकार्ड.

--सोनाम-समानार्थक=syn1=पैटर्न1,syn2=पैटर्न2,...
जब एक साझा लाइब्रेरी लोड की जाती है, तो वालग्रिंड लाइब्रेरी में फ़ंक्शंस की जाँच करता है
प्रतिस्थापित या लपेटा जाना चाहिए। उदाहरण के लिए, मेमचेक सभी मॉलोक संबंधित को प्रतिस्थापित करता है
फ़ंक्शंस (मॉलोक, फ्री, कॉलोक, ...) अपने स्वयं के संस्करणों के साथ। ऐसे प्रतिस्थापन हैं
डिफ़ॉल्ट रूप से केवल साझा पुस्तकालयों में किया जाता है जिसका सोनाम पूर्वनिर्धारित सोनाम से मेल खाता है
पैटर्न (उदा libc.so* लिनक्स पर)। डिफ़ॉल्ट रूप से, स्थैतिक रूप से कोई प्रतिस्थापन नहीं किया जाता है
लिंक्ड लाइब्रेरी या वैकल्पिक लाइब्रेरी जैसे tcmalloc के लिए। कुछ मामलों में,
प्रतिस्थापन की अनुमति है --सोनाम-समानार्थी एक अतिरिक्त पर्यायवाची पैटर्न निर्दिष्ट करने के लिए, दे रही है
प्रतिस्थापन में लचीलापन.

वर्तमान में, इस लचीलेपन की अनुमति केवल मॉलोक संबंधित कार्यों के लिए है
पर्यायवाची somalloc. यह पर्यायवाची मानक प्रतिस्थापन करने वाले सभी उपकरणों के लिए प्रयोग योग्य है
मॉलोक संबंधित फ़ंक्शन (उदाहरण के लिए मेमचेक, मैसिफ़, डीआरडी, हेलग्रिंड, एक्सप-डैट,
exp-sgcheck)।

· वैकल्पिक मॉलोक लाइब्रेरी: मॉलोक संबंधित कार्यों को वैकल्पिक रूप से बदलने के लिए
सोनम के साथ लाइब्रेरी mymalloclib.so, विकल्प दीजिए
--soname-synonyms=somalloc=mymalloclib.so. एकाधिक से मिलान करने के लिए एक पैटर्न का उपयोग किया जा सकता है
पुस्तकालयों के नाम। उदाहरण के लिए, --सोनाम-समानार्थक=somalloc=*tcmalloc* मैच होगा
tcmalloc लाइब्रेरी के सभी वेरिएंट का सोनम नाम (मूल, डिबग, प्रोफाइल, ...
tcmalloc वेरिएंट)।

ध्यान दें: एल्फ साझा लाइब्रेरी का सोनम नाम रीडेल्फ का उपयोग करके पुनर्प्राप्त किया जा सकता है
उपयोगिता।

· स्थिर रूप से लिंक की गई लाइब्रेरी में प्रतिस्थापन का उपयोग करके किया जाता है कोई नहीं पैटर्न.
उदाहरण के लिए, यदि आप इससे लिंक करते हैं libtcmalloc.a, मेमचेक ठीक से काम करेगा जब आप
विकल्प दीजिए --सोनाम-समानार्थक=somalloc=कोई नहीं. ध्यान दें कि कोई भी पैटर्न नहीं होगा
मुख्य निष्पादन योग्य और बिना नाम वाली किसी भी साझा लाइब्रेरी से मिलान करें।

· लिनक्स के लिए "डिफ़ॉल्ट" फ़ायरफ़ॉक्स बिल्ड चलाने के लिए, जिसमें JEMalloc को लिंक किया गया है
मुख्य निष्पादन योग्य, उपयोग --सोनाम-समानार्थक=somalloc=कोई नहीं.

डिबगिंग वालग्रिंड विकल्प


वालग्रिंड को डीबग करने के लिए भी कुछ विकल्प मौजूद हैं। आपको उनका उपयोग करने की आवश्यकता नहीं होनी चाहिए
चीजों के सामान्य क्रम में. यदि आप सूची देखना चाहते हैं, तो इसका उपयोग करें --सहायता-डीबग विकल्प.

मेमचेक विकल्प


--लीक-चेक= [चूक जाना: सारांश]
सक्षम होने पर, क्लाइंट प्रोग्राम समाप्त होने पर मेमोरी लीक की खोज करें। यदि सेट किया गया है
सारांश, यह बताता है कि कितने लीक हुए। यदि सेट किया गया है पूर्ण or हाँ, प्रत्येक व्यक्तिगत रिसाव
जैसा कि विकल्पों में निर्दिष्ट है, विस्तार से दिखाया जाएगा और/या त्रुटि के रूप में गिना जाएगा
--शो-लीक-प्रकार और --त्रुटि-के-लिए-लीक-प्रकार.

--लीक-रिज़ॉल्यूशन= [चूक जाना: उच्च]
लीक जाँच करते समय, यह निर्धारित करता है कि मेमचेक अलग विचार करने के लिए कितना इच्छुक है
एकाधिक लीक को एक में विलय करने के प्रयोजनों के लिए बैकट्रैस को समान होना चाहिए
लीक रिपोर्ट. जब सेट किया जाए कम, केवल पहली दो प्रविष्टियों का मिलान आवश्यक है। कब की, चार
प्रविष्टियों का मिलान होना चाहिए. कब उच्च, सभी प्रविष्टियों का मिलान होना आवश्यक है।

हार्डकोर लीक डिबगिंग के लिए, आप शायद इसका उपयोग करना चाहेंगे --रिसाव-रिज़ॉल्यूशन = उच्च एक साथ
साथ में --संख्या-कॉलर्स=40 या ऐसी ही कोई बड़ी संख्या.

ध्यान दें कि --रिसाव-रिज़ॉल्यूशन सेटिंग मेमचेक की खोजने की क्षमता को प्रभावित नहीं करती है
लीक. यह केवल परिणाम प्रस्तुत करने के तरीके को बदलता है।

--शो-लीक-प्रकार= [चूक जाना: निश्चित, संभव]
में दिखाने के लिए रिसाव प्रकार निर्दिष्ट करता है पूर्ण लीक खोज, निम्न में से किसी एक तरीके से:

· एक या अधिक की अल्पविराम से अलग की गई सूची निश्चित अप्रत्यक्ष संभव पहुंच योग्य.

· सब संपूर्ण सेट (सभी प्रकार के रिसाव) को निर्दिष्ट करने के लिए। यह के बराबर है
--शो-लीक-प्रकार=निश्चित, अप्रत्यक्ष, संभव, पहुंच योग्य.

· कोई नहीं खाली सेट के लिए.

--त्रुटि-के-लिए-लीक-प्रकार= [चूक जाना: निश्चित, संभव]
में त्रुटियों के रूप में गिनने के लिए रिसाव प्रकारों को निर्दिष्ट करता है पूर्ण लीक खोज. is
के समान निर्दिष्ट किया गया है --शो-लीक-प्रकार

--लीक-चेक-ह्यूरिस्टिक्स= [चूक जाना: सभी]
लीक खोजों के दौरान उपयोग किए जाने वाले लीक जांच अनुमानों के सेट को निर्दिष्ट करता है।
अनुमानी नियंत्रण यह नियंत्रित करता है कि किसी ब्लॉक के कौन से आंतरिक संकेतक इसे इस रूप में मानने का कारण बनते हैं
पहुंच योग्य. अनुमानी सेट निम्नलिखित तरीकों में से एक में निर्दिष्ट किया गया है:

· एक या अधिक की अल्पविराम से अलग की गई सूची stdstring लंबाई64 newarray
एकाधिकविरासत.

· सब अनुमानों के संपूर्ण सेट को सक्रिय करने के लिए। यह के बराबर है
--लीक-चेक-ह्युरिस्टिक्स = stdstring, length64, newarray, multipleinheritance.

· कोई नहीं खाली सेट के लिए.

ध्यान दें कि ये आंकड़े उत्पादित वस्तुओं के लेआउट पर निर्भर हैं
सी++ कंपाइलर. उनका परीक्षण कुछ जीसीसी संस्करणों (जैसे 4.4 और 4.7) के साथ किया गया है। वे
अन्य C++ कंपाइलर्स के साथ ठीक से काम नहीं कर सकता है।

--शो-पहुंचयोग्य= , --शो-संभवतः-खोया=
ये विकल्प दिखाने के लिए रिसाव प्रकार निर्दिष्ट करने का एक वैकल्पिक तरीका प्रदान करते हैं:

· --शो-पहुंचयोग्य=नहीं --दिखाओ-संभवतः-खोया=हाँ के बराबर है
--शो-लीक-प्रकार=निश्चित,संभव.

· --शो-पहुंचयोग्य=नहीं --शो-संभवतः-खोया=नहीं के बराबर है
--शो-लीक-प्रकार=निश्चित.

· --दिखाएँ-पहुंचयोग्य=हाँ के बराबर है --शो-लीक-प्रकार=सभी.

ध्यान दें कि --शो-संभवतः-खोया=नहीं कोई प्रभाव नहीं पड़ता है अगर --दिखाएँ-पहुंचयोग्य=हाँ अधिकृत है।

--अंडेफ़-वैल्यू-त्रुटियाँ= [चूक जाना: हां]
नियंत्रित करता है कि क्या मेमचेक रिपोर्ट अपरिभाषित मूल्य त्रुटियों का उपयोग करती है। इसे सेट करें नहीं if
आप अपरिभाषित मान त्रुटियाँ नहीं देखना चाहते. इसका दुष्परिणाम तेज गति से गाड़ी चलाने पर भी पड़ता है
कुछ हद तक मेमचेक ऊपर।

--ट्रैक-उत्पत्ति= [चूक जाना: नहीं]
नियंत्रित करता है कि मेमचेक अप्रारंभीकृत मानों की उत्पत्ति को ट्रैक करता है या नहीं। डिफ़ॉल्ट रूप से, यह
नहीं है, जिसका अर्थ यह है कि यद्यपि यह आपको बता सकता है कि एक अप्रारंभीकृत मान है
खतरनाक तरीके से उपयोग किए जाने के कारण, यह आपको यह नहीं बता सकता कि अप्रारंभीकृत मूल्य कहां से आया
से। इससे अक्सर मूल समस्या का पता लगाना मुश्किल हो जाता है।

कब सेट किया गया हाँ, मेमचेक सभी अप्रारंभीकृत मूल्यों की उत्पत्ति का ट्रैक रखता है।
फिर, जब एक अप्रारंभीकृत मूल्य त्रुटि की सूचना दी जाती है, तो मेमचेक दिखाने का प्रयास करेगा
मूल्य की उत्पत्ति. एक उत्पत्ति निम्नलिखित चार स्थानों में से एक हो सकती है: एक ढेर ब्लॉक,
एक स्टैक आवंटन, एक ग्राहक अनुरोध, या विविध अन्य स्रोत (उदाहरण के लिए, एक कॉल)।
नि:).

हीप ब्लॉक से उत्पन्न होने वाले अप्रारंभीकृत मानों के लिए, मेमचेक दिखाता है कि ब्लॉक कहां है
आवंटित किया गया था. स्टैक आवंटन से उत्पन्न अप्रारंभीकृत मानों के लिए, मेमचेक
आपको बता सकता है कि किस फ़ंक्शन ने मान आवंटित किया है, लेकिन उससे अधिक नहीं - आमतौर पर यह
आपको फ़ंक्शन के शुरुआती ब्रेस का स्रोत स्थान दिखाता है। तो आपको चाहिए
ध्यान से जांचें कि फ़ंक्शन के सभी स्थानीय चर ठीक से प्रारंभ किए गए हैं।

प्रदर्शन ओवरहेड: मूल ट्रैकिंग महंगी है। यह मेमचेक की गति को आधा कर देता है
मेमोरी उपयोग को न्यूनतम 100एमबी और संभवतः अधिक बढ़ा देता है। फिर भी यह हो सकता है
अप्रारंभीकृत के मूल कारण की पहचान करने के लिए आवश्यक प्रयास को काफी कम करें
मूल्य त्रुटियाँ, और इसलिए अक्सर अधिक दौड़ने के बावजूद प्रोग्रामर की उत्पादकता जीत जाती है
धीरे से।

सटीकता: मेमचेक ट्रैक की उत्पत्ति काफी सटीक है। बहुत बड़े स्थान और समय से बचने के लिए
ओवरहेड्स, कुछ अनुमान लगाए गए हैं। यह संभव है, हालाँकि असंभावित है
मेमचेक गलत उत्पत्ति की रिपोर्ट करेगा, या किसी भी उत्पत्ति की पहचान करने में सक्षम नहीं होगा।

ध्यान दें कि संयोजन --ट्रैक-उत्पत्ति=हाँ और --अंडेफ़-वैल्यू-त्रुटियाँ=नहीं is
निरर्थक. मेमचेक स्टार्टअप पर इस संयोजन की जाँच करता है और अस्वीकार करता है।

--आंशिक-भार-ठीक= [चूक जाना: हां]
यह नियंत्रित करता है कि मेमचेक 32-, 64-, 128- और 256-बिट स्वाभाविक रूप से संरेखित लोड को कैसे संभालता है
वे पते जिनके लिए कुछ बाइट्स पता योग्य हैं और अन्य नहीं। कब हाँ, इस तरह
लोड पता त्रुटि उत्पन्न नहीं करता है। इसके बजाय, अवैध से उत्पन्न होने वाले लोड किए गए बाइट्स
पतों को अप्रारंभीकृत के रूप में चिह्नित किया गया है, और कानूनी पतों से संबंधित पतों को चिह्नित किया गया है
सामान्य तरीके से संभाला गया.

. नहीं, आंशिक रूप से अमान्य पतों से लोड को वहां से लोड के समान ही माना जाता है
पूरी तरह से अमान्य पते: एक अवैध-पता त्रुटि जारी की जाती है, और इसके परिणामस्वरूप
बाइट्स को आरंभीकृत के रूप में चिह्नित किया गया है।

ध्यान दें कि इस तरह से व्यवहार करने वाला कोड ISO C/C++ मानकों का उल्लंघन है,
और टूटा हुआ माना जाना चाहिए. यदि संभव हो तो ऐसे कोड को ठीक किया जाना चाहिए।

-- महँगी-परिभाषित-जाँच= [चूक जाना: नहीं]
यह नियंत्रित करता है कि मेमचेक को अधिक सटीक लेकिन अधिक महंगा (समय) नियोजित करना चाहिए या नहीं
किसी मान की परिभाषा की जाँच करते समय उपभोग करने वाले) एल्गोरिदम। डिफ़ॉल्ट सेटिंग है
ऐसा न करें और यह आमतौर पर पर्याप्त है। हालाँकि, अत्यधिक अनुकूलित कोड के लिए
वालग्रिंड कभी-कभी ग़लत शिकायत कर सकता है। वालग्रिंड का आह्वान किया जा रहा है
-- महँगी-परिभाषित-जाँच=हाँ मदद करता है लेकिन प्रदर्शन लागत पर आता है। क्रम
25% की गिरावट देखी गई है लेकिन अतिरिक्त लागत काफी हद तक इस पर निर्भर करती है
हाथ में आवेदन.

--कीप-स्टैकट्रैस=आवंटन|मुक्त|आवंटन-और-मुक्त|आवंटन-तब-मुक्त|कोई नहीं [चूक जाना:
आवंटन-और-मुक्त]
नियंत्रित करता है कि मॉलोक्ड और/या फ्रीड ब्लॉकों के लिए कौन सा स्टैक ट्रेस रखना है।

- आवंटन-तब-मुक्त, आवंटन समय पर एक स्टैक ट्रेस रिकॉर्ड किया जाता है, और संबद्ध किया जाता है
ब्लॉक के साथ. जब ब्लॉक मुक्त हो जाता है, तो दूसरा स्टैक ट्रेस रिकॉर्ड किया जाता है, और यह
आवंटन स्टैक ट्रेस को प्रतिस्थापित करता है। परिणामस्वरूप, किसी भी "मुफ्त के बाद उपयोग" से संबंधित त्रुटियां
इस ब्लॉक में केवल उस स्टैक ट्रेस को दिखाया जा सकता है जहां ब्लॉक को मुक्त किया गया था।

- आवंटन-और-मुक्त, ब्लॉक के लिए आवंटन और डीलोकेशन स्टैक ट्रेस दोनों
जमा हो जाती है। इसलिए "मुफ़्त के बाद उपयोग करें" त्रुटि दोनों दिखाएगी, जिससे त्रुटि हो सकती है
निदान करना आसान है. की तुलना में आवंटन-तब-मुक्त, यह सेटिंग थोड़ी बढ़ जाती है
ब्लॉक के रूप में वालग्रिंड की मेमोरी में एक के बजाय दो संदर्भ होते हैं।

- आवंटन, केवल आवंटन स्टैक ट्रेस रिकॉर्ड किया जाता है (और रिपोर्ट किया जाता है)। साथ मुक्त,
केवल डीलोकेशन स्टैक ट्रेस रिकॉर्ड किया जाता है (और रिपोर्ट किया जाता है)। ये कुछ हद तक मूल्य हैं
वालग्रिंड की मेमोरी और सीपीयू उपयोग कम करें। वे त्रुटि के आधार पर उपयोगी हो सकते हैं
आप जिस प्रकार की खोज कर रहे हैं और उनका विश्लेषण करने के लिए आपको किस स्तर के विवरण की आवश्यकता है। के लिए
उदाहरण के लिए, यदि आप केवल मेमोरी लीक त्रुटियों में रुचि रखते हैं, तो रिकॉर्ड करना पर्याप्त है
आवंटन स्टैक ट्रेस।

- कोई नहीं, मॉलोक और निःशुल्क संचालन के लिए कोई स्टैक ट्रेस रिकॉर्ड नहीं किया जाता है। अपने अगर
प्रोग्राम बहुत सारे ब्लॉक आवंटित करता है और/या कई अलग-अलग स्टैक से आवंटित/मुक्त करता है
निशान, इससे सीपीयू और/या आवश्यक मेमोरी में काफी कमी आ सकती है। निःसंदेह, बहुत कम
हीप ब्लॉक से संबंधित त्रुटियों के लिए विवरण रिपोर्ट किया जाएगा।

ध्यान दें कि एक बार स्टैक ट्रेस रिकॉर्ड हो जाने के बाद, वैलग्रिंड स्टैक ट्रेस को मेमोरी में रखता है
भले ही यह किसी ब्लॉक द्वारा संदर्भित न हो। कुछ प्रोग्राम (उदाहरण के लिए, पुनरावर्ती
एल्गोरिदम) बड़ी संख्या में स्टैक ट्रेस उत्पन्न कर सकते हैं। यदि वालग्रिंड बहुत अधिक उपयोग करता है
ऐसी परिस्थितियों में मेमोरी, आप विकल्पों के साथ आवश्यक मेमोरी को कम कर सकते हैं
--कीप-स्टैकट्रैस और/या विकल्प के लिए छोटे मान का उपयोग करके --संख्या-कॉलर्स.

--फ्रीलिस्ट-वॉल्यूम= [चूक जाना: 20000000]
जब क्लाइंट प्रोग्राम मेमोरी का उपयोग करके रिलीज़ करता है मुक्त (सी में) या हटाएं (सी++), वह मेमोरी
पुनः आवंटन के लिए तत्काल उपलब्ध नहीं कराया गया है। इसके बजाय, इसे चिह्नित किया गया है
अप्राप्य और मुक्त ब्लॉकों की कतार में रखा गया। इसका उद्देश्य जब तक टालना है
संभव वह बिंदु है जिस पर मुक्त हुई स्मृति वापस प्रचलन में आ जाती है। यह
संभावना बढ़ जाती है कि मेमचेक ब्लॉकों तक अमान्य पहुंच का पता लगाने में सक्षम होगा
मुक्त होने के बाद कुछ महत्वपूर्ण अवधि के लिए।

यह विकल्प कतार में ब्लॉकों का अधिकतम कुल आकार, बाइट्स में निर्दिष्ट करता है।
डिफ़ॉल्ट मान बीस मिलियन बाइट्स है। इसे बढ़ाने से कुल राशि बढ़ जाती है
मेमचेक द्वारा उपयोग की गई मेमोरी का लेकिन मुक्त ब्लॉकों के अमान्य उपयोग का पता लगाया जा सकता है
अन्यथा अज्ञात रहें।

--फ्रीलिस्ट-बड़े-ब्लॉक= [चूक जाना: 1000000]
पुनः आवंटन के लिए मुक्त ब्लॉकों की कतार से ब्लॉक बनाते समय,
मेमचेक प्राथमिकता में बड़े या बराबर आकार वाले ब्लॉकों को फिर से प्रसारित करेगा
--फ्रीलिस्ट-बड़े-ब्लॉक. यह सुनिश्चित करता है कि बड़े ब्लॉकों को मुक्त किया जाए (विशेष रूप से मुक्त किया जाए)।
से बड़े ब्लॉक --फ्रीलिस्ट-वॉल्यूम) का तुरंत पुनः प्रसार नहीं होता है
मुफ़्त सूची में सभी (या बहुत सारे) छोटे ब्लॉक। दूसरे शब्दों में, यह विकल्प
यहां तक ​​कि "छोटे" ब्लॉकों के लिए लटकते संकेतक खोजने की संभावना भी बढ़ जाती है
जब बड़े ब्लॉक मुक्त हो जाते हैं.

0 का मान सेट करने का मतलब है कि सभी ब्लॉक FIFO क्रम में पुनः परिचालित किए जाते हैं।

--वर्कअराउंड-जीसीसी296-बग्स= [चूक जाना: नहीं]
सक्षम होने पर, मान लें कि स्टैक पॉइंटर के नीचे कुछ छोटी दूरी पर पढ़ता और लिखता है
जीसीसी 2.96 में बग के कारण हैं, और उनकी रिपोर्ट नहीं करता है। "छोटी दूरी" 256 है
डिफ़ॉल्ट रूप से बाइट्स. ध्यान दें कि जीसीसी 2.96 कुछ प्राचीन लिनक्स पर डिफ़ॉल्ट कंपाइलर है
वितरण (RedHat 7.X) और इसलिए आपको इस विकल्प का उपयोग करने की आवश्यकता हो सकती है। यदि इसका प्रयोग न करें
आपको ऐसा करने की ज़रूरत नहीं है, क्योंकि इससे वास्तविक त्रुटियाँ नज़रअंदाज़ हो सकती हैं। एक बेहतर विकल्प
एक नवीनतम जीसीसी का उपयोग करना है जिसमें यह बग ठीक कर दिया गया है।

आपको 3-बिट पर GCC 4.X या 32.X के साथ काम करते समय भी इस विकल्प का उपयोग करने की आवश्यकता हो सकती है
पावरपीसी लिनक्स। ऐसा इसलिए है क्योंकि जीसीसी कोड उत्पन्न करता है जो कभी-कभी नीचे तक पहुंच जाता है
स्टैक पॉइंटर, विशेष रूप से फ़्लोटिंग-पॉइंट से/पूर्णांक रूपांतरणों के लिए। यह
32-बिट पावरपीसी ईएलएफ विनिर्देश का उल्लंघन है, जिसके लिए कोई प्रावधान नहीं है
स्टैक पॉइंटर के नीचे के स्थान पहुंच योग्य होंगे।

--शो-बेमेल-मुक्त= [चूक जाना: हां]
सक्षम होने पर, मेमचेक जाँचता है कि हीप ब्लॉक को एक फ़ंक्शन का उपयोग करके हटा दिया गया है
आवंटन फ़ंक्शन से मेल खाता है। अर्थात् यह अपेक्षा रखता है मुक्त आवंटन रद्द करने के लिए उपयोग किया जाएगा
द्वारा ब्लॉक आवंटित किये गये malloc, हटाना द्वारा आवंटित ब्लॉकों के लिए नई, तथा हटाएं [] एसटी
द्वारा ब्लॉक आवंटित किये गये नया[]. यदि बेमेल का पता चलता है, तो त्रुटि की सूचना दी जाती है। ये अंदर है
सामान्य रूप से महत्वपूर्ण है क्योंकि कुछ परिवेशों में, एक गैर-मिलान फ़ंक्शन के साथ मुक्त करना
दुर्घटनाओं का कारण बन सकता है।

हालाँकि, एक ऐसा परिदृश्य है जहाँ ऐसे बेमेल मेलों से बचा नहीं जा सकता है। तभी
उपयोगकर्ता इसका कार्यान्वयन प्रदान करता है नई/नया[] वह कॉल malloc की और हटाना/हटाएं []
वह कॉल मुक्त, और ये फ़ंक्शन असममित रूप से रेखांकित हैं। उदाहरण के लिए, कल्पना कीजिए
कि हटाएं [] रेखांकित है लेकिन नया[] क्या नहीं है। नतीजा यह हुआ कि मेमचेक सब कुछ "देखता" है
हटाएं [] को सीधे कॉल के रूप में कॉल करता है मुक्त, भले ही प्रोग्राम स्रोत में कोई न हो
बेमेल कॉल.

इससे बहुत सारी भ्रमित करने वाली और अप्रासंगिक त्रुटि रिपोर्टें उत्पन्न होती हैं।
--दिखाएँ-बेमेल-मुक्त=नहीं इन जाँचों को अक्षम कर देता है. आमतौर पर इसकी सलाह नहीं दी जाती
हालाँकि, उन्हें अक्षम करें, क्योंकि परिणामस्वरूप आप वास्तविक त्रुटियों से चूक सकते हैं।

--ignore-ranges=0xPP-0xQQ[,0xRR-0xSS]
इस विकल्प में सूचीबद्ध कोई भी श्रेणियां (और कई श्रेणियां निर्दिष्ट की जा सकती हैं, अलग की जा सकती हैं
अल्पविराम) को मेमचेक की एड्रेसेबिलिटी जाँच द्वारा अनदेखा कर दिया जाएगा।

--मॉलोक-फिल=
निर्दिष्ट के साथ, मॉलोक, न्यू आदि द्वारा आवंटित ब्लॉक भरता है, लेकिन कॉलोक द्वारा नहीं
बाइट. अस्पष्ट स्मृति भ्रष्टाचार समस्याओं को दूर करने का प्रयास करते समय यह उपयोगी हो सकता है।
मेमचेक द्वारा आवंटित क्षेत्र को अभी भी अपरिभाषित माना जाता है - केवल यह विकल्प
इसकी सामग्री को प्रभावित करता है. ध्यान दें कि --मॉलोक-फिल जब मेमोरी के किसी ब्लॉक पर कोई प्रभाव नहीं पड़ता है
इसका उपयोग क्लाइंट अनुरोधों VALGRIND_MEMPOOL_ALLOC या के लिए तर्क के रूप में किया जाता है
VALGRIND_MALLOCLIKE_BLOCK.

--फ्री-फिल=
निर्दिष्ट बाइट मान के साथ फ्री, डिलीट आदि द्वारा मुक्त किए गए ब्लॉक को भरता है। यह हो सकता है
अस्पष्ट स्मृति भ्रष्टाचार समस्याओं को दूर करने का प्रयास करते समय उपयोगी। मुक्त क्षेत्र है
मेमचेक द्वारा अभी भी पहुंच के लिए वैध नहीं माना जाता है - यह विकल्प केवल इसे प्रभावित करता है
सामग्री ध्यान दें कि --मुक्त-भरण जब इसका उपयोग किया जाता है तो यह मेमोरी के किसी ब्लॉक को प्रभावित नहीं करता है
क्लाइंट अनुरोधों के लिए तर्क VALGRIND_MEMPOOL_FREE या VALGRIND_FREELIKE_BLOCK।

कैशग्रिंड विकल्प


--I1= , , आकार>
लेवल 1 अनुदेश कैश का आकार, संबद्धता और लाइन आकार निर्दिष्ट करें।

--D1= , , आकार>
लेवल 1 डेटा कैश का आकार, संबद्धता और लाइन आकार निर्दिष्ट करें।

--एलएल= , , आकार>
अंतिम-स्तर कैश का आकार, संबद्धता और लाइन आकार निर्दिष्ट करें।

--कैश-सिम=नहीं|हाँ [हाँ]
कैश एक्सेस और मिस काउंट के संग्रह को सक्षम या अक्षम करता है।

--ब्रांच-सिम=नहीं|हाँ [नहीं]
शाखा अनुदेश और गलत पूर्वानुमान गणनाओं के संग्रह को सक्षम या अक्षम करता है। द्वारा
डिफ़ॉल्ट रूप से यह अक्षम है क्योंकि यह Cachegrind को लगभग 25% तक धीमा कर देता है। ध्यान दें कि
आप निर्दिष्ट नहीं कर सकते --कैश-सिम=नहीं और --शाखा-सिम=नहीं एक साथ, जैसे वह चला जाएगा
कैशेग्रिंड में एकत्रित करने के लिए कोई जानकारी नहीं है।

--cachegrind-आउट-फ़ाइल=
प्रोफ़ाइल डेटा को डिफ़ॉल्ट आउटपुट फ़ाइल के बजाय फ़ाइल में लिखें,
कैशग्रिंड.आउट. . %p और %q प्रक्रिया को एम्बेड करने के लिए प्रारूप विनिर्देशकों का उपयोग किया जा सकता है
नाम में आईडी और/या पर्यावरण चर की सामग्री, जैसा कि मामले में है
मुख्य विकल्प --बोटा दस्तावेज.

कॉलग्रिंड विकल्प


--कॉलग्रिंड-आउट-फ़ाइल=
प्रोफ़ाइल डेटा को डिफ़ॉल्ट आउटपुट फ़ाइल के बजाय फ़ाइल में लिखें,
कॉलग्रिंड.आउट. . %p और %q प्रक्रिया को एम्बेड करने के लिए प्रारूप विनिर्देशकों का उपयोग किया जा सकता है
नाम में आईडी और/या पर्यावरण चर की सामग्री, जैसा कि मामले में है
मुख्य विकल्प --बोटा दस्तावेज. जब एकाधिक डंप बनाए जाते हैं, तो फ़ाइल नाम संशोधित किया जाता है
आगे; नीचे देखें।

--डंप-लाइन= [चूक जाना: हां]
यह निर्दिष्ट करता है कि घटना की गणना स्रोत रेखा ग्रैन्युलैरिटी पर की जानी चाहिए।
यह उन स्रोतों के लिए स्रोत एनोटेशन की अनुमति देता है जो डिबग जानकारी के साथ संकलित हैं
(-g).

--डंप-इंस्ट्र= [चूक जाना: नहीं]
यह निर्दिष्ट करता है कि ईवेंट की गिनती प्रति-निर्देश ग्रैन्युलैरिटी पर की जानी चाहिए।
यह असेंबली कोड एनोटेशन की अनुमति देता है। फिलहाल परिणाम केवल प्रदर्शित किये जा सकते हैं
KCachegrind द्वारा.

--कंप्रेस-स्ट्रिंग्स= [चूक जाना: हां]
यह विकल्प प्रोफ़ाइल डेटा के आउटपुट स्वरूप को प्रभावित करता है। यह निर्दिष्ट करता है कि क्या
स्ट्रिंग्स (फ़ाइल और फ़ंक्शन नाम) को संख्याओं द्वारा पहचाना जाना चाहिए। यह सिकुड़ जाता है
फ़ाइल, लेकिन इसे मनुष्यों के लिए पढ़ना अधिक कठिन बना देता है (जो किसी में भी अनुशंसित नहीं है
मामला)।

--कंप्रेस-पॉज़= [चूक जाना: हां]
यह विकल्प प्रोफ़ाइल डेटा के आउटपुट स्वरूप को प्रभावित करता है। यह निर्दिष्ट करता है कि क्या
संख्यात्मक स्थितियों को हमेशा निरपेक्ष मानों के रूप में निर्दिष्ट किया जाता है या होने की अनुमति दी जाती है
पिछली संख्याओं के सापेक्ष. इससे फ़ाइल का आकार छोटा हो जाता है.

--संयोजन-डंप= [चूक जाना: नहीं]
सक्षम होने पर, जब एकाधिक प्रोफ़ाइल डेटा भाग उत्पन्न करने होते हैं तो ये भाग होते हैं
उसी आउटपुट फ़ाइल में जोड़ा गया। सिफारिश नहीं की गई।

--डंप-प्रत्येक-बीबी= [चूक जाना: 0, कभी नहीँ]
प्रत्येक प्रोफ़ाइल डेटा डंप करें गणना बुनियादी ब्लॉक. डंप की आवश्यकता है या नहीं, इसकी केवल जाँच की जाती है
जब वालग्रिंड का आंतरिक शेड्यूलर चलाया जाता है। इसलिए, न्यूनतम सेटिंग उपयोगी है
लगभग 100000। लंबी डंप अवधि को संभव बनाने के लिए गिनती 64-बिट मान है।

--डंप-पहले=
प्रवेश करते समय डंप करें समारोह.

--शून्य-पहले=
प्रवेश करते समय सभी लागतें शून्य समारोह.

--डंप-बाद=
निकलते समय डंप करें समारोह.

--instr-atstart= [चूक जाना: हां]
निर्दिष्ट करें कि क्या आप चाहते हैं कि कॉलग्रिंड शुरुआत से ही सिमुलेशन और प्रोफाइलिंग शुरू कर दे
कार्यक्रम। जब नहीं पर सेट किया जाता है, तो कॉलग्रिंड कोई भी जानकारी एकत्र नहीं कर पाएगा,
कॉल सहित, लेकिन इसमें अधिकतम 4 के आसपास मंदी होगी, जो न्यूनतम है
वालग्रिंड ओवरहेड। कॉलग्रिंड_कंट्रोल के माध्यम से इंस्ट्रुमेंटेशन को इंटरैक्टिव रूप से सक्षम किया जा सकता है
-मैं चालू.

ध्यान दें कि परिणामी कॉल ग्राफ़ में संभवतः शामिल नहीं होगा मुख्य, लेकिन होगा
इसमें इंस्ट्रूमेंटेशन सक्षम होने के बाद निष्पादित सभी फ़ंक्शन शामिल हैं। उपकरण
प्रोग्रामेटिक रूप से सक्षम/अक्षम भी किया जा सकता है। कॉलग्रिंड में फ़ाइल callgrind.h शामिल देखें
मैक्रो के लिए आपको अपने स्रोत कोड में उपयोग करना होगा।

कैश सिमुलेशन के लिए, इंस्ट्रूमेंटेशन पर स्विच करने पर परिणाम कम सटीक होंगे
बाद में प्रोग्राम चलाएं, क्योंकि सिम्युलेटर उस समय एक खाली कैश के साथ शुरू होता है।
इस त्रुटि से निपटने के लिए बाद में ईवेंट संग्रह पर स्विच करें।

--कलेक्ट-एटस्टार्ट= [चूक जाना: हां]
निर्दिष्ट करें कि प्रोफ़ाइल रन की शुरुआत में ईवेंट संग्रह सक्षम है या नहीं।

केवल अपने प्रोग्राम के कुछ हिस्सों को देखने के लिए, आपके पास दो संभावनाएँ हैं:

1. जिस प्रोग्राम भाग को आप प्रोफाइल करना चाहते हैं, उसमें प्रवेश करने से पहले शून्य ईवेंट काउंटर, और डंप करें
उस प्रोग्राम भाग को छोड़ने के बाद ईवेंट एक फ़ाइल पर काउंटर करता है।

2. केवल इवेंट काउंटरों को घटित होता हुआ देखने के लिए संग्रह स्थिति को आवश्यकतानुसार चालू/बंद करें
जबकि प्रोग्राम के अंदर का भाग आप प्रोफाइल करना चाहते हैं।

दूसरे विकल्प का उपयोग तब किया जा सकता है यदि आप जिस प्रोग्राम भाग को प्रोफ़ाइल करना चाहते हैं उसे अनेक कहा जाता है
बार. विकल्प 1, यानी बहुत सारे डंप बनाना यहां व्यावहारिक नहीं है।

संग्रह स्थिति को विकल्प के साथ किसी दिए गए फ़ंक्शन के प्रवेश और निकास पर टॉगल किया जा सकता है
--टॉगल-एकत्रित करें. यदि आप इस विकल्प का उपयोग करते हैं, तो संग्रह स्थिति को अक्षम कर दिया जाना चाहिए
शुरुआत। ध्यान दें कि की विशिष्टता --टॉगल-एकत्रित करें परोक्ष रूप से सेट करता है
--संग्रह-अवस्था=नहीं.

क्लाइंट अनुरोध डालकर संग्रह स्थिति को भी टॉगल किया जा सकता है
CALLGRIND_TOGGLE_COLLECT ; आवश्यक कोड स्थिति पर.

--टॉगल-कलेक्ट=
के प्रवेश/निकास पर संग्रह टॉगल करें समारोह.

--संग्रह-कूद= [चूक जाना: नहीं]
यह निर्दिष्ट करता है कि क्या (सशर्त) छलांग के लिए जानकारी एकत्र की जानी चाहिए। जैसा
ऊपर, callgrind_annotate वर्तमान में आपको डेटा दिखाने में सक्षम नहीं है। आपको उपयोग करना होगा
एनोटेटेड कोड में जंप एरो प्राप्त करने के लिए KCachegrind।

--कलेक्ट-सिस्टम= [चूक जाना: नहीं]
यह निर्दिष्ट करता है कि सिस्टम कॉल समय के लिए जानकारी एकत्र की जानी चाहिए या नहीं।

--कलेक्ट-बस= [चूक जाना: नहीं]
यह निर्दिष्ट करता है कि निष्पादित वैश्विक बस घटनाओं की संख्या एकत्र की जानी चाहिए या नहीं।
इन इवेंट के लिए इवेंट प्रकार "Ge" का उपयोग किया जाता है।

--कैश-सिम= [चूक जाना: नहीं]
निर्दिष्ट करें कि क्या आप पूर्ण कैश सिमुलेशन करना चाहते हैं। डिफ़ॉल्ट रूप से, केवल निर्देश पढ़ा जाता है
पहुंच की गणना की जाएगी ("आईआर")। कैश सिमुलेशन के साथ, आगे इवेंट काउंटर हैं
सक्षम: निर्देश पढ़ने पर कैश छूट जाता है ("I1mr"/"ILmr"), डेटा पढ़ने की पहुंच ("डॉ")
और संबंधित कैश मिस ("D1mr"/"DLmr"), डेटा राइट एक्सेस ("Dw") और संबंधित कैश
चूक गया ("D1mw"/"DLmw")। अधिक जानकारी के लिए, Cachegrind देखें: एक कैश और शाखा-
भविष्यवाणी प्रोफाइलर.

--ब्रांच-सिम= [चूक जाना: नहीं]
निर्दिष्ट करें कि क्या आप शाखा भविष्यवाणी सिमुलेशन करना चाहते हैं। आगे इवेंट काउंटर हैं
सक्षम: निष्पादित सशर्त शाखाओं की संख्या और संबंधित भविष्यवक्ता चूक
("बीसी"/"बीसीएम"), अप्रत्यक्ष जंप और जंप एड्रेस प्रेडिक्टर की संबंधित चूक को निष्पादित किया
("बी"/"बिम")।

हेलग्रिंड विकल्प


--लिखना मुफ़्त है=नहीं|हाँ [चूक जाना: नहीं]
सक्षम होने पर (डिफ़ॉल्ट नहीं), हेलग्रिंड हीप मेमोरी को मुक्त करने को ऐसे मानता है जैसे कि
स्मृति मुक्त से ठीक पहले लिखी गई थी। यह उन दौड़ों को उजागर करता है जहां स्मृति है
एक थ्रेड द्वारा संदर्भित, और दूसरे द्वारा मुक्त किया गया, लेकिन कोई अवलोकन योग्य नहीं है
यह सुनिश्चित करने के लिए सिंक्रनाइज़ेशन ईवेंट कि संदर्भ मुफ़्त से पहले होता है।

यह कार्यक्षमता Valgrind 3.7.0 में नई है, और इसे प्रयोगात्मक माना जाता है। यह है
डिफ़ॉल्ट रूप से सक्षम नहीं है क्योंकि कस्टम मेमोरी एलोकेटर के साथ इसकी सहभागिता नहीं है
वर्तमान में अच्छी तरह से समझ में आ गया है। उपयोगकर्ता प्रतिक्रिया का स्वागत है.

--ट्रैक-लॉकऑर्डर=नहीं|हाँ [चूक जाना: हां]
सक्षम होने पर (डिफ़ॉल्ट), हेलग्रिंड लॉक ऑर्डर स्थिरता जांच करता है। के लिए
कुछ ख़राब प्रोग्रामों के कारण बड़ी संख्या में लॉक ऑर्डर त्रुटियाँ रिपोर्ट की जा सकती हैं
कष्टप्रद, खासकर यदि आप केवल दौड़ त्रुटियों में रुचि रखते हैं। इसलिए आप ऐसा कर सकते हैं
लॉक ऑर्डर चेकिंग को अक्षम करना उपयोगी लगता है।

--इतिहास-स्तर=कोई नहीं|लगभग|पूर्ण [चूक जाना: भरा हुआ]
--इतिहास-स्तर=पूर्ण (डिफ़ॉल्ट) कारणों के बारे में हेलग्रिंड पर्याप्त जानकारी एकत्र करता है
"पुरानी" पहुंच यह है कि यह रेस रिपोर्ट में दो स्टैक ट्रेस उत्पन्न कर सकती है - दोनों स्टैक
वर्तमान पहुंच के लिए ट्रेस, और पुरानी, ​​परस्पर विरोधी पहुंच के लिए ट्रेस। को
मेमोरी उपयोग को सीमित करें, "पुरानी" एक्सेस स्टैक ट्रेस अधिकतम 8 प्रविष्टियों तक सीमित हैं,
भले ही --संख्या-कॉलर्स मूल्य बड़ा है.

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

--इतिहास-स्तर=कोई नहीं विपरीत चरम है. इसके कारण हेलग्रिंड कोई भी संग्रह नहीं कर पाता है
पिछली पहुंच के बारे में जानकारी. यह इससे नाटकीय रूप से तेज़ हो सकता है
--इतिहास-स्तर=पूर्ण.

--इतिहास-स्तर=लगभग इन दो चरम सीमाओं के बीच एक समझौता प्रदान करता है। यह कारण बनता है
हेलग्रिंड को बाद की पहुंच और अनुमानित जानकारी के लिए पूर्ण ट्रेस दिखाने के लिए कहा गया है
पूर्व पहुंच के संबंध में। इस अनुमानित जानकारी में दो स्टैक शामिल हैं, और
पहले की पहुंच कार्यक्रम बिंदुओं के बीच कहीं होने की गारंटी है
दो ढेरों द्वारा निरूपित। यह सटीक स्टैक दिखाने जितना उपयोगी नहीं है
पिछली पहुंच (जैसे --इतिहास-स्तर=पूर्ण करता है), लेकिन यह कुछ न होने से बेहतर है, और यह
लगभग उतना ही तेज़ है --इतिहास-स्तर=कोई नहीं.

--संघर्ष-कैश-आकार=एन [चूक जाना: 1000000]
इस झंडे का केवल यहीं पर कोई प्रभाव है --इतिहास-स्तर=पूर्ण.

"पुरानी" परस्पर विरोधी पहुंच के बारे में जानकारी सीमित आकार के कैश में संग्रहीत की जाती है,
एलआरयू-शैली प्रबंधन के साथ। यह आवश्यक है क्योंकि इसे स्टोर करना व्यावहारिक नहीं है
प्रोग्राम द्वारा बनाई गई प्रत्येक मेमोरी एक्सेस के लिए स्टैक ट्रेस। ऐतिहासिक जानकारी
हाल ही में एक्सेस न किए गए स्थानों पर जगह खाली करने के लिए समय-समय पर इसे हटा दिया जाता है
कैश।

यह विकल्प विभिन्न मेमोरी की संख्या के संदर्भ में कैश के आकार को नियंत्रित करता है
वे पते जिनके लिए परस्पर विरोधी पहुंच जानकारी संग्रहीत है। अगर आपको वह मिल जाए
हेलग्रिंड अपेक्षित दो के बजाय केवल एक स्टैक के साथ रेस त्रुटियाँ दिखा रहा है
ढेर, इस मान को बढ़ाने का प्रयास करें।

न्यूनतम मान 10,000 है और अधिकतम 30,000,000 है (डिफ़ॉल्ट का तीस गुना)
कीमत)। मान को 1 बढ़ाने से हेलग्रिंड की मेमोरी आवश्यकता बहुत बढ़ जाती है
लगभग 100 बाइट्स, इसलिए अधिकतम मूल्य आसानी से तीन अतिरिक्त गीगाबाइट खा जाएगा
स्मृति का

--चेक-स्टैक-रेफ्स=नहीं|हाँ [चूक जाना: हां]
डिफ़ॉल्ट रूप से हेलग्रिंड आपके प्रोग्राम द्वारा किए गए सभी डेटा मेमोरी एक्सेस की जांच करता है। यह झंडा
आपको थ्रेड स्टैक (स्थानीय चर) तक पहुंच की जांच छोड़ने में सक्षम बनाता है। ये हो सकता है
प्रदर्शन में सुधार, लेकिन स्टैक-आवंटित डेटा पर मिसिंग रेस की कीमत पर आता है।

--अनदेखा-धागा-निर्माण= [चूक जाना: नहीं]
नियंत्रित करता है कि थ्रेड निर्माण के दौरान सभी गतिविधियों को अनदेखा किया जाना चाहिए या नहीं। डिफ़ॉल्ट रूप से
केवल सोलारिस पर सक्षम। सोलारिस उच्च थ्रूपुट, समानता और प्रदान करता है
अधिक सुक्ष्म लॉकिंग की कीमत पर, अन्य ऑपरेटिंग सिस्टम की तुलना में स्केलेबिलिटी
गतिविधि। उदाहरण के लिए इसका मतलब यह है कि जब glibc के अंतर्गत एक थ्रेड बनाया जाता है, तो केवल एक
सभी थ्रेड सेटअप के लिए बड़े लॉक का उपयोग किया जाता है। सोलारिस libc कई बारीक दाने वाले तालों का उपयोग करता है
और निर्माता थ्रेड यथाशीघ्र अपनी गतिविधियों को फिर से शुरू कर देता है, उदाहरण के लिए छोड़कर
निर्मित थ्रेड में स्टैक और टीएलएस सेटअप अनुक्रम। यह स्थिति हेलग्रिंड को भ्रमित करती है
क्योंकि यह मानता है कि रचयिता और सृजित के बीच कुछ गलत क्रम है
धागा; और इसलिए आवेदन में कई प्रकार की दौड़ की स्थितियाँ नहीं होंगी
की सूचना दी। ऐसे गलत ऑर्डर को रोकने के लिए, इस कमांड लाइन विकल्प को हाँ पर सेट किया गया है
सोलारिस पर डिफ़ॉल्ट. इसलिए सभी गतिविधि (लोड, स्टोर, क्लाइंट अनुरोध) को नजरअंदाज कर दिया जाता है
दौरान:

· क्रिएटर थ्रेड में pthread_create() कॉल करें

· निर्मित थ्रेड में थ्रेड निर्माण चरण (स्टैक और टीएलएस सेटअप)।

इसके अलावा थ्रेड निर्माण के दौरान आवंटित नई मेमोरी को ट्रैक नहीं किया जाता है, जो कि रेस रिपोर्टिंग है
वहां दबा दिया जाता है. डीआरडी यही काम परोक्ष रूप से करता है। ये इसलिए जरूरी है क्योंकि
सोलारिस libc कई वस्तुओं को कैश करता है और उन्हें विभिन्न थ्रेड्स आदि के लिए पुन: उपयोग करता है
हेलग्रिंड को भ्रमित करता है।

DRD विकल्प


--चेक-स्टैक-var= [चूक जाना: नहीं]
नियंत्रित करता है कि DRD स्टैक वेरिएबल्स पर डेटा रेस का पता लगाता है या नहीं। स्टैक वेरिएबल्स का सत्यापन
डिफ़ॉल्ट रूप से अक्षम है क्योंकि अधिकांश प्रोग्राम स्टैक वैरिएबल साझा नहीं करते हैं
धागे।

--अनन्य-सीमा= [चूक जाना: बंद]
यदि किसी म्यूटेक्स या राइटर लॉक को समय से अधिक समय तक रखा गया है तो एक त्रुटि संदेश प्रिंट करें
मिलीसेकंड में निर्दिष्ट. यह विकल्प लॉक विवाद का पता लगाने में सक्षम बनाता है।

--जॉइन-लिस्ट-वॉल्यूम= [चूक जाना: 10]
डेटा रेस जो एक थ्रेड के अंत में एक स्टेटमेंट और दूसरे थ्रेड के बीच होती है
यदि थ्रेड के समाप्त होने के तुरंत बाद मेमोरी एक्सेस जानकारी को हटा दिया जाता है तो यह छूट सकता है
शामिल हो गया. यह विकल्प किसी को यह निर्दिष्ट करने की अनुमति देता है कि कितनी सम्मिलित थ्रेड मेमोरी है
पहुंच संबंधी जानकारी बरकरार रखी जानी चाहिए.

--केवल-पहली दौड़= [चूक जाना: नहीं]
क्या केवल पहली डेटा रेस की रिपोर्ट की जाए जो मेमोरी लोकेशन पर पाई गई हो
या सभी डेटा रेस जो मेमोरी लोकेशन पर पाई गई हैं।

--मुक्त-है-लिखना= [चूक जाना: नहीं]
क्या स्मृति तक पहुँचने और स्मृति को मुक्त करने के बीच दौड़ की रिपोर्ट करनी है। इसे सक्षम किया जा रहा है
विकल्प के कारण DRD थोड़ा धीमा चल सकता है। टिप्पणियाँ:

· कस्टम मेमोरी एलोकेटर का उपयोग करते समय इस विकल्प को सक्षम न करें
VG_USERREQ__MALLOCLIKE_BLOCK और VG_USERREQ__FREELIKE_BLOCK क्योंकि ऐसा होगा
परिणाम गलत सकारात्मक होता है।

· संदर्भ-गणित वस्तुओं का उपयोग करते समय इस विकल्प को सक्षम न करें क्योंकि ऐसा होगा
परिणाम गलत सकारात्मक होता है, भले ही उस कोड को ठीक से एनोटेट किया गया हो
ANNOTATE_HAPPENS_BEfore और ANNOTATE_HAPPENS_AFTER। उदाहरण के लिए आउटपुट देखें
उदाहरण के लिए निम्नलिखित आदेश: valgrind --tool=drd --free-is-write=yes
डीआरडी/परीक्षण/एनोटेट_स्मार्ट_पॉइंटर।

--रिपोर्ट-सिग्नल-अनलॉक= [चूक जाना: हां]
कॉल की रिपोर्ट करना है या नहीं pthread_cond_signal और pthread_cond_broadcast जहां
सिग्नल के माध्यम से जुड़ा म्यूटेक्स pthread_cond_wait or
pthread_cond_timed_waitसिग्नल भेजे जाने के समय लॉक नहीं किया जाता है। एक संकेत भेज रहा हूँ
संबंधित म्यूटेक्स पर लॉक लगाए बिना यह एक सामान्य प्रोग्रामिंग त्रुटि है जो हो सकती है
सूक्ष्म नस्ल स्थितियों और अप्रत्याशित व्यवहार का कारण बनता है। वहाँ कुछ असामान्य मौजूद हैं
हालाँकि सिंक्रोनाइज़ेशन पैटर्न जहाँ बिना पकड़े सिग्नल भेजना सुरक्षित है
संबंधित म्यूटेक्स पर लॉक करें।

--खंड-विलय= [चूक जाना: हां]
खंड विलय को नियंत्रित करता है। सेगमेंट मर्जिंग मेमोरी उपयोग को सीमित करने के लिए एक एल्गोरिदम है
डेटा रेस डिटेक्शन एल्गोरिदम। खंड विलय को अक्षम करने से सटीकता में सुधार हो सकता है
तथाकथित 'अन्य खंड' दौड़ रिपोर्ट में प्रदर्शित होते हैं, लेकिन यह एक आउट को भी ट्रिगर कर सकते हैं
स्मृति त्रुटि का.

--खंड-विलय-अंतराल= [चूक जाना: 10]
नए खंडों की निर्दिष्ट संख्या होने के बाद ही खंड विलय करें
बनाया था। यह एक उन्नत कॉन्फ़िगरेशन विकल्प है जो किसी को यह चुनने की अनुमति देता है कि क्या करना है
कम मान चुनकर या डीआरडी को तेजी से चलाने के लिए डीआरडी की मेमोरी उपयोग को कम करें
थोड़ा अधिक मूल्य चुनना। इस पैरामीटर के लिए इष्टतम मान इस पर निर्भर करता है
कार्यक्रम का विश्लेषण किया जा रहा है. अधिकांश प्रोग्रामों के लिए डिफ़ॉल्ट मान अच्छा काम करता है।

--साझा-सीमा= [चूक जाना: बंद]
यदि रीडर लॉक को निर्दिष्ट समय से अधिक समय तक रखा गया है तो एक त्रुटि संदेश प्रिंट करें
(मिलीसेकंड में). यह विकल्प लॉक विवाद का पता लगाने में सक्षम बनाता है।

--शो-confl-seg= [चूक जाना: हां]
दौड़ रिपोर्ट में परस्पर विरोधी खंड दिखाएं। चूँकि यह जानकारी खोजने में मदद कर सकती है
डेटा दौड़ के कारण, यह विकल्प डिफ़ॉल्ट रूप से सक्षम है। इस विकल्प को अक्षम करने से
डीआरडी का आउटपुट अधिक कॉम्पैक्ट है।

--शो-स्टैक-उपयोग= [चूक जाना: नहीं]
थ्रेड निकास समय पर स्टैक उपयोग प्रिंट करें। जब कोई प्रोग्राम बड़ी संख्या में बनाता है
थ्रेड्स के लिए आवंटित वर्चुअल मेमोरी की मात्रा को सीमित करना महत्वपूर्ण हो जाता है
धागे के ढेर. यह विकल्प यह देखना संभव बनाता है कि स्टैक मेमोरी कितनी है
क्लाइंट प्रोग्राम के प्रत्येक थ्रेड द्वारा उपयोग किया जाता है। ध्यान दें: DRD टूल स्वयं ही कुछ आवंटित करता है
क्लाइंट थ्रेड स्टैक पर अस्थायी डेटा। इस अस्थायी डेटा के लिए आवश्यक स्थान
क्लाइंट प्रोग्राम द्वारा स्टैक मेमोरी आवंटित करते समय इसे आवंटित किया जाना चाहिए, लेकिन ऐसा नहीं है
डीआरडी द्वारा रिपोर्ट किए गए स्टैक उपयोग में शामिल।

--अनदेखा-धागा-निर्माण= [चूक जाना: नहीं]
नियंत्रित करता है कि थ्रेड निर्माण के दौरान सभी गतिविधियों को अनदेखा किया जाना चाहिए या नहीं। डिफ़ॉल्ट रूप से
केवल सोलारिस पर सक्षम। सोलारिस उच्च थ्रूपुट, समानता और प्रदान करता है
अधिक सुक्ष्म लॉकिंग की कीमत पर, अन्य ऑपरेटिंग सिस्टम की तुलना में स्केलेबिलिटी
गतिविधि। उदाहरण के लिए इसका मतलब यह है कि जब glibc के अंतर्गत एक थ्रेड बनाया जाता है, तो केवल एक
सभी थ्रेड सेटअप के लिए बड़े लॉक का उपयोग किया जाता है। सोलारिस libc कई बारीक दाने वाले तालों का उपयोग करता है
और निर्माता थ्रेड यथाशीघ्र अपनी गतिविधियों को फिर से शुरू कर देता है, उदाहरण के लिए छोड़कर
निर्मित थ्रेड में स्टैक और टीएलएस सेटअप अनुक्रम। यह स्थिति डीआरडी को भ्रमित करती है
मानता है कि निर्माता और निर्मित धागे के बीच कुछ गलत क्रम है; और
इसलिए एप्लिकेशन में कई प्रकार की दौड़ स्थितियों की रिपोर्ट नहीं की जाएगी। को
ऐसे गलत ऑर्डर को रोकने के लिए, यह कमांड लाइन विकल्प डिफ़ॉल्ट रूप से हाँ पर सेट है
सोलारिस. इसलिए सभी गतिविधि (लोड, स्टोर, क्लाइंट अनुरोध) को इस दौरान अनदेखा कर दिया जाता है:

· क्रिएटर थ्रेड में pthread_create() कॉल करें

· निर्मित थ्रेड में थ्रेड निर्माण चरण (स्टैक और टीएलएस सेटअप)।

--ट्रेस-एड्र= [चूक जाना: कोई नहीं]
निर्दिष्ट पते के लिए सभी लोड और स्टोर गतिविधि का पता लगाएं। यह विकल्प हो सकता है
एक से अधिक बार निर्दिष्ट।

--ptrace-addr= [चूक जाना: कोई नहीं]
निर्दिष्ट पते के लिए सभी लोड और स्टोर गतिविधि का पता लगाएं और ऐसा करना जारी रखें
उस पते पर मौजूद मेमोरी को मुक्त कर पुनः आवंटित कर दिया गया है।

--ट्रेस-आवंटन= [चूक जाना: नहीं]
सभी मेमोरी आवंटन और डीलोकेशन का पता लगाएं। भारी मात्रा में उत्पादन उत्पन्न कर सकता है।

--ट्रेस-बैरियर= [चूक जाना: नहीं]
सभी बाधा गतिविधि का पता लगाएं.

--ट्रेस-cond= [चूक जाना: नहीं]
सभी स्थिति परिवर्तनीय गतिविधि का पता लगाएं।

--ट्रेस-फोर्क-जॉइन = [चूक जाना: नहीं]
सभी थ्रेड निर्माण और सभी थ्रेड समाप्ति घटनाओं का पता लगाएं।

--ट्रेस-एचबी= [चूक जाना: नहीं]
ANNOTATE_HAPPENS_BEFORE(), ANNOTATE_HAPPENS_AFTER() और के निष्पादन का पता लगाएं
ANNOTATE_HAPPENS_DONE() क्लाइंट अनुरोध।

--ट्रेस-म्यूटेक्स= [चूक जाना: नहीं]
सभी म्यूटेक्स गतिविधि का पता लगाएं।

--trace-rwlock= [चूक जाना: नहीं]
सभी पाठक-लेखक लॉक गतिविधि का पता लगाएं।

--ट्रेस-सेमाफोर= [चूक जाना: नहीं]
सभी सेमाफोर गतिविधि का पता लगाएं।

पुंजक विकल्प


--ढेर= [चूक जाना: हां]
निर्दिष्ट करता है कि हीप प्रोफाइलिंग की जानी चाहिए या नहीं।

--हीप-एडमिन= [चूक जाना: 8]
यदि हीप प्रोफाइलिंग सक्षम है, तो प्रति ब्लॉक प्रशासनिक बाइट्स की संख्या देता है
उपयोग। यह औसत का अनुमान होना चाहिए, क्योंकि यह भिन्न हो सकता है। उदाहरण के लिए,
Linux पर glibc द्वारा उपयोग किए जाने वाले एलोकेटर को प्रति ब्लॉक 4 से 15 बाइट्स की आवश्यकता होती है,
विभिन्न कारकों पर निर्भर करता है। उस आवंटनकर्ता को मुक्त करने के लिए व्यवस्थापक स्थान की भी आवश्यकता होती है
ब्लॉक, लेकिन मैसिफ इसका हिसाब नहीं दे सकता।

--स्टैक्स= [चूक जाना: नहीं]
निर्दिष्ट करता है कि स्टैक प्रोफाइलिंग की जानी चाहिए या नहीं। यह विकल्प मैसिफ को धीमा कर देता है
बहुत, और इसलिए डिफ़ॉल्ट रूप से बंद है। ध्यान दें कि मैसिफ मानता है कि मुख्य स्टैक है
स्टार्ट-अप पर आकार शून्य। यह सच नहीं है, लेकिन अन्यथा सटीक रूप से करना कठिन है।
इसके अलावा, शून्य से शुरू करना मुख्य स्टैक के हिस्से के आकार को बेहतर ढंग से इंगित करता है
जिस पर वास्तव में उपयोगकर्ता प्रोग्राम का नियंत्रण होता है।

--पेज-जैसा-ढेर= [चूक जाना: नहीं]
मैसिफ को मॉलोक्ड ब्लॉक के बजाय पेज स्तर पर मेमोरी को प्रोफाइल करने के लिए कहता है
स्तर। विवरण के लिए ऊपर देखें.

--गहराई= [चूक जाना: 30]
विस्तृत स्नैपशॉट के लिए आवंटन पेड़ों की अधिकतम गहराई दर्ज की गई। इसे बढ़ा रहे हैं
मैसिफ को कुछ हद तक धीमी गति से चलाने, अधिक मेमोरी का उपयोग करने और बड़े आउटपुट का उत्पादन करने में मदद करेगा
फाइलें.

--alloc-fn=
इस विकल्प के साथ निर्दिष्ट कार्यों को ऐसे माना जाएगा जैसे कि वे एक ढेर थे
आवंटन समारोह जैसे malloc. यह उन कार्यों के लिए उपयोगी है जो रैपर हैं
malloc or नई, जो आवंटन वृक्षों को अरुचिकर जानकारी से भर सकता है।
मल्टीपल नाम देने के लिए इस विकल्प को कमांड लाइन पर कई बार निर्दिष्ट किया जा सकता है
कार्य करता है.

ध्यान दें कि नामित फ़ंक्शन के साथ केवल तभी व्यवहार किया जाएगा यदि यह a में शीर्ष प्रविष्टि है
स्टैक ट्रेस, या इस तरह से व्यवहार किए गए किसी अन्य फ़ंक्शन के ठीक नीचे। उदाहरण के लिए, यदि आपके पास है
एक समारोह मल्लो ०५ वह लपेटता है malloc, तथा मल्लो ०५ वह लपेटता है मल्लो ०५, बस निर्दिष्ट कर रहा हूँ
--alloc-fn=malloc2 कोई प्रभाव नहीं पड़ेगा. आपको निर्दिष्ट करना होगा --alloc-fn=malloc1 as
कुंआ। यह थोड़ा असुविधाजनक है, लेकिन इसका कारण आवंटन की जांच करना है
कार्य धीमा है, और यदि मैसिफ़ इसके माध्यम से देखना बंद कर दे तो बहुत समय बचता है
जैसे ही उसे कोई ऐसी प्रविष्टि मिलती है जो मेल नहीं खाती है, तो उसे स्टैक ट्रेस प्रविष्टियों से हटा देना चाहिए
सभी प्रविष्टियों के माध्यम से जारी रखें।

ध्यान दें कि C++ नाम विघटित हैं। यह भी ध्यान दें कि अतिभारित C++ नाम लिखे जाने चाहिए
पूरे में। शेल को टूटने से रोकने के लिए एकल उद्धरण आवश्यक हो सकते हैं।
उदाहरण के लिए:

--alloc-fn='ऑपरेटर नया(अहस्ताक्षरित, std::nothrow_t const&)'

--अनदेखा-fn=
कोई भी प्रत्यक्ष ढेर आवंटन (अर्थात एक कॉल malloc, नई, आदि, या किसी फ़ंक्शन के लिए कॉल
एक द्वारा नामित --आवंटन-एफएन विकल्प) जो इस विकल्प द्वारा निर्दिष्ट फ़ंक्शन में होता है
अनदेखा किया जाए। यह अधिकतर परीक्षण उद्देश्यों के लिए उपयोगी है। यह विकल्प निर्दिष्ट किया जा सकता है
एकाधिक फ़ंक्शंस को नाम देने के लिए कमांड लाइन पर कई बार।

कोई रीयलोक किसी उपेक्षित ब्लॉक को भी अनदेखा कर दिया जाएगा, भले ही रीयलोक कॉल करता है
किसी उपेक्षित फ़ंक्शन में घटित नहीं होता. इससे ढेर के नकारात्मक आकार की संभावना से बचा जा सकता है
यदि उपेक्षित ब्लॉकों को छोटा कर दिया जाए रीयलोक.

C++ फ़ंक्शन नाम लिखने के नियम समान हैं --आवंटन-एफएन ऊपर।

--दहलीज= [चूक जाना: 1.0]
कुल मेमोरी आकार के प्रतिशत के रूप में, ढेर आवंटन के लिए महत्व सीमा।
इससे कम राशि वाली आवंटन वृक्ष प्रविष्टियाँ एकत्रित की जाएंगी। ध्यान दें कि
इसे ms_print के समान नाम के विकल्प के साथ निर्दिष्ट किया जाना चाहिए।

--शिखर-अशुद्धि= [चूक जाना: 1.0]
मैसिफ आवश्यक रूप से वास्तविक वैश्विक मेमोरी आवंटन शिखर को रिकॉर्ड नहीं करता है; द्वारा
डिफ़ॉल्ट रूप से यह शिखर तभी रिकॉर्ड करता है जब वैश्विक मेमोरी आवंटन का आकार इससे अधिक हो जाता है
पिछला शिखर कम से कम 1.0%। ऐसा इसलिए क्योंकि कई स्थानीय आवंटन हो सकते हैं
रास्ते में चोटियाँ होंगी, और प्रत्येक के लिए एक विस्तृत स्नैपशॉट लेना महंगा होगा
और बेकार, क्योंकि उनमें से एक को छोड़कर सभी को बाद में त्याग दिया जाएगा। यह अशुद्धि हो सकती है
इस विकल्प के माध्यम से बदला गया (यहां तक ​​कि 0.0%), लेकिन मैसिफ काफी धीमी गति से चलेगा
संख्या शून्य के करीब पहुंचती है.

--समय-इकाई= [चूक जाना: i]
प्रोफ़ाइलिंग के लिए उपयोग की जाने वाली समय इकाई. तीन संभावनाएँ हैं: निर्देश
निष्पादित (i), जो अधिकांश मामलों के लिए अच्छा है; वास्तविक (दीवार घड़ी) समय (एमएस, यानी)
मिलीसेकंड), जो कभी-कभी उपयोगी होता है; और ढेर पर बाइट्स आवंटित/हटाए गए
और/या स्टैक (बी), जो बहुत कम समय तक चलने वाले कार्यक्रमों और परीक्षण के लिए उपयोगी है
उद्देश्य, क्योंकि यह विभिन्न मशीनों में सबसे अधिक प्रतिलिपि प्रस्तुत करने योग्य है।

--विस्तृत-आवृत्ति= [चूक जाना: 10]
विस्तृत स्नैपशॉट की आवृत्ति. साथ --विस्तृत-आवृत्ति=1, प्रत्येक स्नैपशॉट विस्तृत है।

--अधिकतम-स्नैपशॉट्स= [चूक जाना: 100]
रिकॉर्ड किए गए स्नैपशॉट की अधिकतम संख्या. यदि एन पर सेट किया गया है, तो बहुत को छोड़कर सभी प्रोग्रामों के लिए
शॉर्ट-रनिंग वाले, स्नैपशॉट की अंतिम संख्या N/2 और N के बीच होगी।

--मासिफ़-आउट-फ़ाइल= [चूक जाना: मासिफ़.आउट.%p]
प्रोफ़ाइल डेटा को डिफ़ॉल्ट आउटपुट फ़ाइल के बजाय फ़ाइल में लिखें,
मासिफ़.आउट. . %p और %q प्रक्रिया आईडी को एम्बेड करने के लिए प्रारूप विनिर्देशकों का उपयोग किया जा सकता है
और/या नाम में पर्यावरण चर की सामग्री, जैसा कि मामले में है
मुख्य विकल्प --बोटा दस्तावेज.

एसजीचेक विकल्प


वर्तमान में कोई SGCheck-विशिष्ट कमांड-लाइन विकल्प नहीं हैं।

बीबीवी विकल्प


--बीबी-आउट-फ़ाइल= [चूक जाना: बीबी.आउट.%p]
यह विकल्प मूल ब्लॉक वेक्टर फ़ाइल का नाम चुनता है। %p और %q प्रारूप
विनिर्देशकों का उपयोग प्रक्रिया आईडी और/या किसी परिवेश की सामग्री को एम्बेड करने के लिए किया जा सकता है
नाम में वैरिएबल, जैसा कि कोर विकल्प के मामले में है --बोटा दस्तावेज.

--पीसी-आउट-फ़ाइल= [चूक जाना: पीसी.आउट.%p]
यह विकल्प पीसी फ़ाइल का नाम चुनता है। यह फ़ाइल प्रोग्राम काउंटर पते रखती है
और विभिन्न बुनियादी ब्लॉकों के लिए फ़ंक्शन नाम की जानकारी। इसका प्रयोग संयोजन में किया जा सकता है
मूल ब्लॉक वेक्टर फ़ाइल को केवल फ़ंक्शन नामों के माध्यम से तेज़ी से अग्रेषित करने के बजाय
अनुदेश मायने रखता है. %p और %q प्रक्रिया को एम्बेड करने के लिए प्रारूप विनिर्देशकों का उपयोग किया जा सकता है
नाम में आईडी और/या पर्यावरण चर की सामग्री, जैसा कि मामले में है
मुख्य विकल्प --बोटा दस्तावेज.

--अंतराल-आकार= [चूक जाना: 100000000]
यह विकल्प उपयोग के लिए अंतराल के आकार का चयन करता है। डिफ़ॉल्ट 100 मिलियन है
निर्देश, जो आमतौर पर उपयोग किया जाने वाला मूल्य है। अन्य आकारों का उपयोग किया जा सकता है; छोटे
अंतराल सूक्ष्म चरणों वाले कार्यक्रमों की सहायता कर सकते हैं। हालाँकि अंतराल का आकार छोटा है
वार्म-अप प्रभावों के कारण सटीकता संबंधी समस्याएं पैदा हो सकती हैं (जब विभिन्न को तेजी से अग्रेषित किया जाता है)।
वास्तुशिल्प सुविधाओं को प्रारंभ नहीं किया जाएगा, और इसमें कुछ संख्या लगेगी
निर्देश इससे पहले कि वे राज्य को "वार्म अप" करें, एक पूर्ण अनुकरण बिना होगा
तेजी से अग्रेषित करने वाला. बड़े अंतराल आकार इसे कम करते हैं।)

--instr-गिनती-केवल [चूक जाना: नहीं]
यह विकल्प टूल को केवल निर्देशों की कुल संख्या प्रदर्शित करने के लिए कहता है, और नहीं
वास्तविक मूल ब्लॉक वेक्टर फ़ाइल उत्पन्न करें। यह डिबगिंग आदि के लिए उपयोगी है
बड़े बुनियादी ब्लॉक वेक्टर को उत्पन्न किए बिना निर्देश गणना जानकारी एकत्र करना
फाइलें.

नौकर विकल्प


--बुनियादी-गणना= [चूक जाना: हां]
सक्षम होने पर, लैकी निम्नलिखित आँकड़े और जानकारी प्रिंट करता है
क्लाइंट प्रोग्राम का निष्पादन:

1. द्वारा निर्दिष्ट फ़ंक्शन पर कॉल की संख्या --fnname विकल्प (डिफ़ॉल्ट
मुख्य है). यदि प्रोग्राम के प्रतीक हटा दिए गए हैं, तो गिनती हमेशा रहेगी
शून्य।

2. सामने आने वाली सशर्त शाखाओं की संख्या और संख्या और अनुपात
जो ले लिए गए.

3. प्रोग्राम द्वारा दर्ज और पूर्ण किए गए सुपरब्लॉक की संख्या। ध्यान दें कि के कारण
जेआईटी द्वारा किए गए अनुकूलन, यह बिल्कुल सटीक मान नहीं है।

4. अतिथि की संख्या (x86, amd64, पीपीसी, आदि) निर्देश और आईआर विवरण
निष्पादित। आईआर वालग्रिंड का आरआईएससी-जैसा मध्यवर्ती प्रतिनिधित्व है जिसके माध्यम से सभी
इंस्ट्रुमेंटेशन हो गया है.

5. इनमें से कुछ गणनाओं के बीच अनुपात।

6. क्लाइंट प्रोग्राम का निकास कोड।

--विस्तृत-गणना= [चूक जाना: नहीं]
सक्षम होने पर, लैकी एक तालिका प्रिंट करता है जिसमें लोड, स्टोर और एएलयू की गिनती होती है
संचालन, उनके आईआर प्रकारों द्वारा विभेदित। आईआर प्रकारों की पहचान उनके आईआर द्वारा की जाती है
नाम ("I1", "I8", ... "I128", "F32", "F64", और "V128")।

--ट्रेस-मेम= [चूक जाना: नहीं]
सक्षम होने पर, लैकी लगभग हर मेमोरी एक्सेस के आकार और पते को प्रिंट करता है
कार्यक्रम। विवरण के लिए फ़ाइलlacey/lk_main.c के शीर्ष पर टिप्पणियाँ देखें
आउटपुट स्वरूप के बारे में, यह कैसे काम करता है, और एड्रेस ट्रेस में अशुद्धियाँ। टिप्पणी
यह विकल्प भारी मात्रा में आउटपुट उत्पन्न करता है।

--ट्रेस-सुपरब्लॉक= [चूक जाना: नहीं]
सक्षम होने पर, लैकी प्रत्येक सुपरब्लॉक का पता प्रिंट करता है (एक एकल प्रविष्टि,
एकाधिक निकास, कोड का रैखिक हिस्सा) प्रोग्राम द्वारा निष्पादित। यह मुख्य रूप से है
वालग्रिंड डेवलपर्स के लिए रुचि। फ़ाइल के शीर्ष पर टिप्पणियाँ देखें
आउटपुट स्वरूप के बारे में विवरण के लिएlacey/lk_main.c। ध्यान दें कि यह विकल्प उत्पन्न करता है
बड़ी मात्रा में उत्पादन.

--fnname= [चूक जाना: मुख्य]
उस फ़ंक्शन को बदलता है जिसके लिए कॉल की गणना कब की जाती है --बुनियादी-गणना=हाँ अधिकृत है।

onworks.net सेवाओं का उपयोग करके ऑनलाइन valgrind का उपयोग करें


Ad




×
विज्ञापन
❤️यहां खरीदारी करें, बुक करें या खरीदें - कोई शुल्क नहीं, इससे सेवाएं निःशुल्क बनी रहती हैं।