2012-05-03 9 views
7

मैं अपने डीबगर के रूप में एलएलडीबी के साथ एक्सकोड 4.3.2 का उपयोग कर रहा हूं।मैं एक्सकोड में _WebThreadLockFromAnyThread पर प्रतीकात्मक ब्रेकपॉइंट कैसे सेट करूं?

मैं एक परियोजना है कि कोड है कि माध्यमिक धागे से UIKit बुला रहा है शामिल विरासत में मिला है, के रूप में इन लॉग संदेशों द्वारा दिखाए गए:

2012-05-02 21: 48: 14.603 APPNAME देव [77,594: 16e0f] शून्य _WebThreadLockFromAnyThread (बूल), 0x8d5f810: मुख्य थ्रेड या वेब थ्रेड के अलावा किसी थ्रेड से वेब लॉक प्राप्त करना। UIKit को द्वितीयक धागे से नहीं बुलाया जाना चाहिए।

मैंने अधिकांश कोड साफ़ कर दिया है जो माध्यमिक धागे से UIKit कॉल कर रहा था, लेकिन मैं कभी-कभी लॉग में इस संदेश को देख रहा हूं। ऐप क्रैश नहीं हो रहा है, इसलिए यह तय करना मुश्किल है कि समस्या कहां है।

मैं _WebThreadLockFromAnyThread पर एक ब्रेकपाइंट सेट करना चाहते हैं, लेकिन जब मैं का उपयोग कर एक प्रतीकात्मक ब्रेकपाइंट सेट करने का प्रयास:

b _WebThreadLockFromAnyThread 

डिबगर मुझसे कहता है:

ब्रेकप्वाइंट --name सेट ' _WebThreadLockFromAnyThread 'ब्रेकपॉइंट बनाया गया: 12: नाम =' _WebThreadLockFromAnyThread ', स्थान = 0 (लंबित) चेतावनी: किसी वास्तविक स्थानों पर ब्रेकपॉइंट को हल करने में असमर्थ।

मैंने ब्रेकपॉइंट नेविगेटर में UI का उपयोग करके प्रतीकात्मक ब्रेकपॉइंट बनाने का भी प्रयास किया है, लेकिन मुझे यकीन नहीं है कि मॉड्यूल के लिए क्या दर्ज करना है। जब मैं मॉड्यूल को खाली छोड़ देता हूं, ब्रेकपॉइंट बनाया जाता है लेकिन डीबग कंसोल में लॉग संदेश दिखाई देने पर यह तब भी टूट नहीं जाता है।

क्या कोई मुझे बता सकता है कि मैं _WebThreadLockFromAnyThread पर ब्रेकपॉइंट जोड़ने के बारे में कैसे जा सकता हूं, और यह भी निर्धारित करता हूं कि इस प्रतीक के लिए परिभाषित मॉड्यूल क्या है?

उत्तर

2

बस अंडरस्कोर छोड़ दें। बी WebThreadLockFromAnyThread दोनों मेरे लिए lldb और gdb में काम करता है। अब, यह एक्सकोड 4.6 है, इसलिए यदि आप पुराने संस्करण पर फंस गए हैं तो मुझे लगता है कि यह संभव है कि उस संस्करण में कोई समस्या 4.6 में मौजूद न हो।

+0

बहुत बढ़िया, बहुत बहुत धन्यवाद! मैं निम्नलिखित समान कमांड का उपयोग करके समाप्त हुआ जो कि एक शर्त भी सेट करता है कि अगर यह मुख्य थ्रेड के बाहर फ़ंक्शन कहा जाता है तो यह केवल टूट जाता है: 'ब्रेक सेट -n WebThreadLockFromAnyThread -c'! (BOOL) [NSThread isMainThread] '' – Greg

0

आप मॉड्यूल का पता लगाने के लिए एनएम कमांड या क्लास-डंप टूल का उपयोग करने का प्रयास कर सकते हैं।

+0

मैंने निष्पादन योग्य पर एनएम का उपयोग करने की कोशिश की कि जब मैंने अपना ऐप बनाया, तो एक्सकोड उत्पन्न हुआ, लेकिन प्रतीक इसमें स्थित नहीं है। – Greg

0

अधिकतर संभावना है कि आपको कोई प्रतीकों की आवश्यकता नहीं है क्योंकि डिफ़ॉल्ट रूप से एक्सकोड एक "रिलीज" निर्माण करता है जो कि यदि मैं सही हूं तो निष्पादन फ़ाइल को बहुत छोटा बना देता है। मुझे यकीन नहीं है कि इस समय कैसा है, लेकिन आपको "डीबग" बिल्ड पर स्विच करने का विकल्प ढूंढना होगा, जो आपके विश्लेषण के लिए इंतजार कर रहे सभी सुंदर प्रतीकों की गारंटी देगा।

+0

मैं ऐसे निर्माण के साथ काम कर रहा हूं जिसमें "कॉपी के दौरान स्ट्रिप डीबग सिंबल" सेट है "नहीं"। – Greg

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

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