2012-12-18 56 views
6

में ऑब्जेक्ट्स के वेरिएबल के प्रदर्शन में सुधार कैसे करें I आईफोन ऐप्स लिखने के लिए आईओएस सिम्युलेटर के साथ मैक पर एक्सकोड 4.5 का उपयोग कर रहा हूं। जब मैंने डीबगर में ब्रेकपॉइंट मारा, तो मैं चर को देखने के लिए "ऑटो" का उपयोग करता हूं। समस्या यह है कि वस्तुओं को शुरू में सभी तब्दील कर दिया गया है, और मुझे इसका मूल्य देखने के लिए प्रत्येक को विस्तारित करना होगा। यह ठीक है, लेकिन यह थकाऊ और पढ़ने के लिए मुश्किल है। क्या डिबगर में डेटा प्रस्तुत करने के तरीके को अनुकूलित करने का कोई तरीका है?एक्सकोड 4.5 डीबगर (नोब)

मैंने LLDB tutorial पर देखा है और मैंने क्विन टेलर द्वारा the post में "कस्टम सारांश स्ट्रिंग" देखा, लेकिन मुझे यह समझ में नहीं आया। उन्होंने एक्सकोड का पुराना संस्करण इस्तेमाल किया होगा।

मूल रूप से, मैं एक वस्तु है जैसे

वर्ग Vec3 { सार्वजनिक: नाव एक्स, वाई, जेड; };

और डीबग विंडो में मैं

pos (Vec3) 

देख सकते हैं और क्या मैं नहीं बल्कि देखना चाहते हैं

pos = (Vec3) (x=45.2, y=10.7, z=2.0) 

है चर का विस्तार करने के बिना। क्या कोई जानता है कि मैं यह कैसे कर सकता हूं?

उत्तर

2

यदि Vec3 आपकी कक्षा है (या कुछ जो आप subclass कर सकते हैं), description ओवरराइड करें। जब आप कंसोल में po pos कहते हैं तो यह आपको स्वरूपित करने देता है।

अधिक सजावटी पाने के लिए, यह पृष्ठ देखें:

http://lldb.llvm.org/varformats.html

आप कह सकते हैं

type summary add --summary-string 

कैसे आप चर के इस प्रकार प्रदर्शित करना चाहते हैं की एक स्ट्रिंग वर्णन किया गया।

यदि आप वास्तव में नट-किरकिरा में जाना चाहते हैं, तो आप अपना खुद का फॉर्मेटर लिख सकते हैं; डीबगिंग और एलएलडीबी पर दो डब्ल्यूडब्ल्यूडीसी 2012 वीडियो में अच्छी चर्चा। लेकिन आपको ऐसा करने के लिए एक पायथन लिपि लिखनी है, इसलिए मैंने अधिक "नोब" समाधान दिया है।

+0

हाँ मैं Vec3 को संशोधित कर सकता हूं। "वर्णन" संदेश उद्देश्य-सी के लिए ठीक काम करता है, लेकिन सी ++ नहीं। और यह केवल कंसोल विंडो में काम करता है। मैं घड़ी खिड़की को अनुकूलित करने में सक्षम होने की उम्मीद कर रहा था। एमएस स्टूडियो में आप इसे "autoexp.dat" फ़ाइल के साथ बहुत अच्छी तरह से कर सकते हैं। –

+0

हे! मुझे बस एक बहुत अच्छा [महान वेब पेज] मिला है (http://disanji.net/iOS_Doc/#documentation/DeveloperTools/Conceptual/XcodeDebugging/220-Viewing_Variables_and_Memory/variables_and_memory.html) जो बताता है कि आप structs के लिए कस्टम फॉर्मेटर्स कैसे बना सकते हैं (जैसे CGRect) 'CustomDataViews.plist' को संशोधित करके ... दुर्भाग्य से ऐप्पल ने इसे हटा दिया है ... कम से कम, मैं इसे कहीं भी नहीं ढूंढ सकता। –

+0

"मैं घड़ी विंडो को कस्टमाइज़ करने में सक्षम होने की उम्मीद कर रहा था", हाँ, ठीक है, यही वह है जो पाइथन लिपि के लिए है। आप इसे लिखते हैं, आप इसे अपनी ~/.lldbinit फ़ाइल के माध्यम से जोड़ते हैं, आप सभी सेट हैं। – matt

7

मैं इसे xcode 4.5.2 के साथ काम करने में सक्षम था। संक्षेप में, ये कदम हैं।

  1. खुला है या

    type summary add Vec3 --summary-string "x=${var.x}, y=${var.y}, z=${var.z}" 
    
  2. पुनः आरंभ xcode बनाने ~/.lldbinit पाठ संपादक का उपयोग, और जोड़ने के इस लाइन। अब जब आप एक ब्रेकपाइंट मारा Vec3 के रूप में प्रदर्शित किया जाएगा,

    pos (Vec3) x=1, y=3.125, z=9.5 
    

आप में अन्य बहुत कुछ कर सकते हैं।lldbinit http://lldb.llvm.org/varformats.html

में वर्णित उदाहरण

type summary add Vec3 --inline-children --omit-names 

के लिए एक सारांश स्ट्रिंग ऑटो उत्पन्न होगा और

type summary add --inline-children -x "Vec[:alnum:]*" 

सभी प्रकार है कि "वीइसी" के साथ शुरू करने के लिए सारांश तार को स्वत: जनरेट होगा।

+0

एक और उपयोगी बोली। आप घड़ी विंडो में चर पर डबल-क्लिक कर सकते हैं, और पॉप-अप प्रतीत होता है जिसे "प्रकार के लिए सारांश सारांश प्रारूप" कहा जाता है जिसमें आप अस्थायी रूप से प्रकार की सारांश स्ट्रिंग को कस्टमाइज़ कर सकते हैं। हालांकि वाक्यविन्यास "प्रकार सारांश जोड़ें ..." से थोड़ा अलग प्रतीत होता है –