2011-01-26 21 views
15

क्या एक्सकोड में परिवर्तनीय परिवर्तन या मेमोरी बदलावों को ट्रैक करने का कोई तरीका है? मैं विजुअल स्टूडियो के डाटा ब्रेकपॉइंट जैसी कार्यक्षमता की तलाश में हूं।एक्सकोड में ट्रैकिंग चर या स्मृति परिवर्तन?

मैं जानना चाहता हूं कि मेरी ऑब्जेक्ट का दृश्य फ्रेम बदल रहा है। मैं एक सदस्य चर पर एक ब्रेकपॉइंट सेट करना चाहता हूं और इसे चलाता हूं। तब मैं निर्धारित कर सकता था कि यह कहां बदल गया है।

उत्तर

19

एक्सकोड अपनी डीबगिंग कार्यक्षमता को लागू करने के लिए gdb (या lldb, लेकिन यह एक और कहानी) का उपयोग करता है। gdb में हार्डवेयर वॉचपॉइंट्स सेट करने की क्षमता है और इसलिए एक्सकोड भी करता है।

This स्मृति त्रुटियों के सामान्य डीबगिंग के लिए एक उपयोगी पृष्ठ है। एक्सकोड की डीबगिंग कंसोल विंडो वास्तव में सिर्फ gdb शैल है, आप कृपया आदेशों में टाइप कर सकते हैं। हमेशा सहायक सहायक क्विन टेलर बताता है कि this संबंधित पोस्ट में ऐसा कैसे करें।

यदि आप सीधे gdb के साथ इंटरैक्ट करने से बचें, तो आप एक्सकोड की डीबगिंग विंडो में एक चर पर राइट-क्लिक कर सकते हैं और "वेरिएबल देखें" का चयन कर सकते हैं। एक्सकोड तब भी आपको सतर्क करेगा जब भी आपका वैरिएबल का मान बदल दिया गया हो।

+0

विस्तार के उत्तर की सराहना करें! मै कोशिश करुॅगा! – SeniorLee

+0

कभी भी घड़ी विंडो में चर पर राइट क्लिक करने के लिए सोचा नहीं! अब उम्मीद है कि यह वास्तव में इसे हिट करता है;) लगता है कि रोपी पर्याप्त रूप से परिवर्तनीय मूल्य प्रदर्शित कर रहा है - मुझे बता रहा है कि स्थानीय वर्रों का दायरा से बाहर है वास्तव में उपयोगी नहीं है –

+0

@LaceySnr: मेरा उत्तर जांचें। मुझे एक्सकोड घड़ी के साथ एक ही समस्या है। यही कारण है कि मैं जीडीबी घड़ी का उपयोग कर रहा हूँ। –

1

हां।

भागो मेनू के तहत वहाँ "डीबगर" जो gdb लिए एक दृश्य दृश्यपटल प्रदान करता है।

इसके अलावा, बिल्ड और रन बटन के बगल में ब्रेकपॉइंट बटन भी है। आप इसे क्लिक कर सकते हैं और रन> प्रबंधित ब्रेकपॉइंट्स के तहत अपने ब्रेकपॉइंट प्रबंधित कर सकते हैं।

+1

मुझे यकीन है कि यह है कि क्या वह की तलाश में नहीं हूँ। आप मानक ब्रेकपॉइंट्स के बारे में बात कर रहे हैं, लेकिन जब वह मेमोरी में किसी स्थान पर संग्रहीत डेटा बदलता है तो वह तोड़ने के बारे में बात कर रहा है। ब्रेकपॉइंट की तुलना में एक घड़ी की तरह। –

+0

समझ गया। हाँ, मुझे नहीं पता कि इस तरह कोई "ट्रिगर्स" है या नहीं। हालांकि, डीबगर के माध्यम से और मानक ब्रेकपॉइंट्स के उपयोग से आप डेटा बदल सकते हैं। शायद विजुअल स्टूडियो के रूप में चिकनी नहीं है। – aqua

9

आप hardware watchpoints उपयोग कर सकते हैं।


आप चर आप (gdb प्रॉम्प्ट में प्रकार p &my_var) ट्रैक करना चाहते हैं, उसका पता प्राप्त करने के लिए है।

यह 0x12345678 जैसे कुछ प्रिंटिंग प्रिंट करेगा।

  • जीडीबी के साथ: watch *(int *)0x12345678 टाइप करें।

  • lldb साथ

    : watch set expression (int *)0x12345678 (या w s e (int *)0x12345678)

यह मानती है कि आपके चर एक int है। यह इस पते पर एक हार्डवेयर दृष्टिकोण बनाएगा।


आशा इस मदद करता है।

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