2012-12-18 17 views
22

पर आदेश निष्पादित करें मैं एक जीडीबी स्क्रिप्ट में कुछ ब्रेकपॉइंट्स को पूर्वनिर्धारित करना चाहता हूं और इन ब्रेकपॉइंट्स पर कुछ विशेष आदेशों को आमंत्रित करना चाहता हूं और बाद में प्रोग्राम निष्पादन को स्वचालित रूप से जारी रखना चाहता हूं। तो, आदर्श रूप में, मैं की तरह एक gdb स्क्रिप्ट करना चाहते हैं निम्नलिखित:gdb स्क्रिप्टिंग: चयनित ब्रेकपॉइंट

b someFunction 
... 
if breakpoint from above reached do: 
    print var1 
    call someOtherFunction 
    continue 
done 

साथ ही एक दुर्भाग्यपूर्ण तथ्य यह है कि मैं कम से gdb संस्करण के रूप में breakpoints उपयोग करने के लिए अजगर इंटरफेस पर भरोसा नहीं कर सकते, सर्वर मैं वर्तमान में काम करता हूं बहुत पुराना है!

+0

संभावित डुप्लिकेट [जीडीबी में कुछ ब्रेकपॉइंट हिट होने पर विशिष्ट कार्य करें] (http://stackoverflow.com/questions/6517423/do- विशिष्ट-action-when-certain-breakpoint-hits-in-gdb) –

उत्तर

30

आपको command कमांड पर एक नज़र डालना चाहिए, जो आपको ब्रेकपॉइंट के रूप में gdb कमांड जोड़ने में सक्षम बनाता है। Gdb मैनुअल के breakpoint command list अनुभाग देखें।

उदाहरण के लिए:

break someFunction 
commands 
print var1 
end 

होगा, जब someFunction पर ब्रेकप्वाइंट मारा जाता है, स्वचालित रूप से print var1

+8

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

+0

नोट यह गैर इंटरैक्टिव मोड (उदाहरण के लिए बैच या एमआई मोड) में काम नहीं करता है जब तक कि https://sourceware.org/bugzilla/show_bug.cgi?id=10079 तय नहीं किया गया है – pixelbeat

+1

यदि कहें तो मैं वही आदेश निष्पादित करना चाहता हूं एकाधिक ब्रेकपॉइंट्स के लिए, फिर इसे कैसे करें? (कॉपी पेस्टिंग के बिना;) –