2012-10-13 12 views
10

मैं उस मौजूदा विधि से बाहर निकलना चाहता हूं जिसे मैं आगे बढ़ रहा हूं।चरणबद्ध करते समय विधि से "वापसी"?

-(void)helloWorld { 
    NSLog(@"Hello"); 
    // I would like to return here, so that "World" isn't printed. 
    NSLog(@"World"); 
} 

मैंने निम्नलिखित की कोशिश की है, लेकिन बिना किस्मत के।

(lldb) expr return 
<no result> 

क्या यह एलएलडीबी के साथ संभव है?

उत्तर

6

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

Xcode breakpoint

अगर मैं NSLog(@"B") छोड़ना चाहते, मैं बस लाइन 20 से हरा तीर 23 लाइन, समारोह बस "वापसी" कहीं से भी मैं चाहता हूँ, जिसका मतलब है खींच सकते हैं।

+1

मैंने कई लोगों को रिपोर्ट किया है कि एलएलडीबी और एआरसी के तहत, पीसी को एक नए स्थान पर खींचने से दुर्घटना हो सकती है। अभी भी कुछ कंक काम करने जा रहे हैं। इसके अलावा, अगर आप जीडीबी से परिचित हैं, लेकिन एलएलडीबी नहीं, तो इस धोखे की चादर की एक प्रति सहेजें: http://lldb.llvm.org/lldb-gdb.html –

+0

हाँ, आम तौर पर पीसी को खींचने में बहुत जोखिम भरा होता है जब तक आप दृश्यों के पीछे चल रहे सभी रनटाइम/मेमोरी आवंटन/प्रारंभिकरण को समझें। यदि आपके पास सरल वक्तव्यों की एक श्रृंखला है तो आप अक्सर इससे दूर हो सकते हैं लेकिन कुछ भी परिष्कृत और यह छिपे हुए गठिया से भरा हुआ है। –

17

दुर्भाग्य से एक्सकोड 4.5.x में फ़ंक्शन से प्रारंभिक वापसी को लागू करने का कोई तरीका नहीं है। वर्तमान lldb स्रोतों में http://lldb.llvm.org/ पर एक नया जोड़ा गया आदेश है, thread return, जो आप चाहते हैं - इसमें फ़ंक्शन के वापसी मूल्य को निर्दिष्ट करने की क्षमता शामिल है। हालांकि, अगली बड़ी रिलीज तक यह एक्सकोड में नहीं होगा।

+7

एक्सकोड 6 में 'थ्रेड रिटर्न' बॉक्स से बाहर काम करता है – fabb

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