2009-08-19 9 views
23

सांत्वना हमेशा डिबगिंग के दौरान मुझे एक त्रुटि संदेश थूक: "_NSLockError (पर तोड़) डिबग करने के लिए"तोड़ ... कैसे करने के लिए?

मेरे धारणा है: XCode में मैं एक निश्चित breackpoint प्रकट करने के लिए है, ताकि डिबगर बिंदु पर बंद हो जाता है, जहां इस त्रुटि होती है।

कैसे मैं इस कर सकते हैं?

उत्तर

14

1 मेनू से/बिल्ड चुनें -> निर्माण और डीबग

2/"GDB" आइकन पर क्लिक - आप "डिबगर कंसोल"

3/प्रेस Control + C के लिए स्विच कर दिया जाएगा अपनी बाइनरी बाधित करें। आपको जीडीबी प्रॉम्प्ट मिलेगा। "ख _NSLockError" में

4/प्रकार और ब्रेकपाइंट सेट करने के बाद निष्पादन जारी है।

(gdb) b _NSLockError 
Breakpoint 8 at 0x911db1a9 
(gdb) c 
Continuing. 

5/तुम, बस के रूप में यह कंसोल से चल रहा था GDB साथ बातचीत कर सकते यानी आप Ctrl + C फिर से कर सकते हैं और देखने वर्तमान breakpoints:

(gdb) info breakpo 
Num Type   Disp Enb Address What 
8 breakpoint  keep y 0x911db1a9 <_NSLockError+9> 
+0

धन्यवाद !!! यह वही है जो मैं देख रहा था :) – Nobik

+0

मुझे कभी-कभी टर्मिनल.एप से जीडीबी के भीतर से चलकर मेरी बाइनरी को डीबग करना आसान लगता है, यानी "gdb /path_to/App.app/Contents/MacOS/App" – diciu

+0

हम्म ... इसे मेरे तरीके से करना बहुत आसान है, क्योंकि यह डीबग सत्रों में लागू होना जारी रखेगा ... –

12

XCode में अपनी परियोजना के लिए स्वचालित रूप से ऐसा करने के लिए :

  1. एक्सकोड में, ब्रेकपॉइंट्स विंडो खोलने के लिए विकल्प-कमांड-बी (या रन> शो> ब्रेकपॉइंट्स)।
  2. यह कहाँ कहते हैं, "प्रतीक के लिए डबल क्लिक करें", डबल क्लिक करें ... और "_NSLockError" में पेस्ट करें। विंडो में
  3. क्लिक करें कहीं और, और अपनी नई प्रविष्टि स्वचालित रूप से अपडेट किया जाएगा (या बस इसे मैन्युअल रूप से जोड़) मॉड्यूल = "फाउंडेशन" के साथ (उद्धरण के बिना)
  4. बिल्ड & जाओ और अब आप डीबगर में छोड़ देंगे स्वचालित रूप से जब आप स्वचालित रूप से पता लगाए गए डेडलॉक को दबाते हैं।
41

Xcode 4 जीयूआई का उपयोग करना: निचले बाएं कोने में

  1. ओपन ब्रेकप्वाइंट नाविक (आदेश + 6 या देखें> नाविक> दिखाएं ब्रेकप्वाइंट नेविगेटर)
  2. क्लिक करें '+' और चुनें 'जोड़ें प्रतीकात्मक ब्रेकप्वाइंट ... 'मॉड्यूल क्षेत्र में
  3. क्लिक करें' फाउंडेशन संपन्न '
  4. 0' प्रतीक क्षेत्र
  5. दर्ज में ''
  6. दर्ज करें '_NSLockError

उपरोक्त के रूप में डीबगर लॉक पर टूट जाएगा जिसके परिणामस्वरूप डेडलॉक होता है ताकि आप कॉलस्टैक की जांच कर सकें और उम्मीद कर लें कि मूल लॉक कहां हुआ।

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