2011-10-20 4 views
5

मुझे वर्तमान में malloc() और मुफ्त() के कार्यान्वयन लिखना है, और मुझे एक ड्राइवर प्रोग्राम दिया गया है जो मेरे दो कार्यान्वयन को चलाएगा।जीडीबी: क्या कोई ऐसा आदेश है जो आपको यह देखने की अनुमति देता है कि फ़ंक्शन को कितनी बार बुलाया गया है?

लेकिन वर्तमान में, मैं segfaulting हूं क्योंकि मुक्त() एक पेलोड आकार को मुक्त करने की कोशिश कर रहा है जो बिलियन बाइट्स (जो गलत है) में अच्छी तरह से है। मेरे पास जीडीबी चलाने से लाइन और लाइन नंबर है, लेकिन मुझे यह जानने की जरूरत है कि malloc() और free() को एक से अधिक बार बुलाया गया है, यह पुष्टि करने के लिए कि वास्तव में कम से कम एक केस है जहां यह आसानी से चलता है।

+0

ठीक है, मुझे लगता है कि मैं प्रोग्राम में एक वैश्विक चर बना सकता हूं ... और उसके बाद जीडीबी में प्रिंट करें। लेकिन क्या एक बेहतर तरीका है? –

उत्तर

1

(जीडीबी)
निर्दिष्ट लाइन या फ़ंक्शन पर ब्रेकपॉइंट सेट करें।
ब्रेक [LOCATION] [थ्रेड THREADNUM] [यदि कंडीशन]
स्थान एक पंक्ति संख्या, फ़ंक्शन नाम, या "*" और पता हो सकता है।
यदि कोई लाइन नंबर निर्दिष्ट है, तो उस पंक्ति के लिए कोड की शुरुआत में तोड़ें।
यदि कोई फ़ंक्शन निर्दिष्ट किया गया है, तो उस फ़ंक्शन के लिए कोड की शुरुआत में ब्रेक करें।
यदि कोई पता निर्दिष्ट किया गया है, तो उस सटीक पते पर तोड़ दें।
कोई स्थान नहीं, चयनित स्टैक फ्रेम के वर्तमान निष्पादन पते का उपयोग करता है।
यह एक स्टैक फ्रेम पर वापस लौटने के लिए उपयोगी है।

+0

'ब्रेक' का दस्तावेज 'ब्रेक' दस्तावेज करने में वाकई अच्छा है लेकिन इस मामले में पर्याप्त नहीं है :)। मार्टिन का जवाब वह है जो आपको बताता है कि जीडीबी द्वारा हिट गिनती को कैसे देखना है – salicideblock

6

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

2

बस मार्टिन की जानकारी चलाने gdb पूरा करने के लिए, और फिर, gdb शीघ्र पर:

b <file:line_number or function name> 
ignore <breakpoint identifier> 100000 

तो फिर आप अपने निष्पादन योग्य चलाने (या आप फिर से शुरू) और फिर, जब आप की संख्या की जांच करना चाहते ब्रेकपॉइंट बार बार मारा गया है, जीडीबी प्रॉम्प्ट पर:

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

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