2010-10-27 9 views
49

मुझे पता है कि मैं प्रोग्राम काउंटर को किसी विशिष्ट रेखा पर सेट करने के लिए jump का उपयोग कर सकता हूं और इसलिए मैं एक या अधिक पंक्तियां छोड़ सकता हूं (या फिर कुछ पंक्तियां निष्पादित कर सकता हूं)। क्या मैं आसानी से लाइन नंबर दर्ज किए बिना अगली पंक्ति को छोड़ सकता हूं?क्या मैं लाइन नंबर टाइप किए बिना लाइन को छोड़ने के लिए जीडीबी का उपयोग कर सकता हूं?

यह रन टाइम पर कुछ "टिप्पणी" करने के लिए बहुत सुविधाजनक होगा।

+0

संबंधित: 'कूद' का उपयोग करने के बारे में अधिक सामान्य सामान (उदाहरण के लिए कि यह केवल वर्तमान फ़ंक्शन के अंदर सुरक्षित है, और केवल तभी जब आप '-O0' के साथ संकलित): https://stackoverflow.com/questions/4116632/is- यह संभव-से-कूद-छोड़-इन-जीडीबी-डीबगर/46043760 # 46043760 –

उत्तर

60
jump +1 

अगली पंक्ति रेखा पर कूदता है यानी वर्तमान लाइन को छोड़कर। कूद लक्ष्य पर अस्थायी ब्रेकपॉइंट सेट करने के लिए आप इसे tbreak +1 से जोड़ना भी चाह सकते हैं।

http://sourceware.org/gdb/current/onlinedocs/gdb/Specify-Location.html देखें gdb के साथ स्थानों को व्यक्त करने के अधिक तरीकों के लिए।

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

+0

बहुत स्पष्ट है, लेकिन धन्यवाद! डीबगर कमांड के साथ ब्रेकपॉइंट्स का उपयोग कर एक्सकोड में बढ़िया काम करता है। –

+1

यह ध्यान दिया जाना चाहिए कि यह एलएलडीबी में भी काम करता है। :) –

+0

यदि आप सीधे एएसएम में काम कर रहे हैं, तो आप 'j addr' जारी करके जो निर्देश चाहते हैं उसे कूद सकते हैं जहां' addr' वह पता है जहां आप कूदना चाहते हैं। – dionyziz

5

निष्पादन के दौरान लाइन्स के किसी भी नंबर पर जाएं करने के लिए:

gdb$b M 

कूद लाइन करने के लिए एम::

[Current Position -- in GDB] Line N 
.......... // Lines To Skip 
.......... 
.......... 
[Line To Execute - After Jumping] Line M 

रेखा एम पर एक ब्रेकप्वाइंट रखो

gdb$jump M 
14

मैं निम्नलिखित है मेरे .gdbinit कॉन्फ़िगरेशन फ़ाइल में:

define skip 
    tbreak +1 
    jump +1 
end 

तो बस एक लाइन छोड़ने के लिए gdb में skip टाइप करें।

+0

इसे "छोड़ें (एन)" पर पैरामीट्रीज़ कैसे करें? – p2rkw

+2

@ p2rkw। आप $ 1 के साथ '1' को प्रतिस्थापित कर सकते हैं, जैसा कि यहां बताया गया है: https://sourceware.org/gdb/onlinedocs/gdb/Define.html। ध्यान रखें कि मैं अब 'skip' नाम का उपयोग नहीं करूंगा, क्योंकि यह एक जीडीबी फ़ंक्शन बन गया है (आपके कोड के माध्यम से कदम उठाने के दौरान स्रोत फ़ाइलों को छोड़ने की इजाजत देता है)। – gospes

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