2012-03-14 13 views
39

जीडीबी & एलएलडीबी डीबगर्स के बीच क्या अंतर है? मैंने हाल ही में अपने एक्सकोड संस्करण को 4.2 से 4.3 & में जीडीबी से एलएलडीबी में अपग्रेड करने के लिए चेतावनी प्राप्त करना शुरू कर दिया है।जीडीबी बनाम एलएलडीबी डिबगर्स

+0

एक बड़ा अंतर जो मुझे बदलने से वापस पकड़ रहा है वह यह है कि जीडीबी बहुत बार दोहराए जाने वाले सामग्री के साथ बड़े सरणी प्रिंट करने में बहुत चालाक है, जबकि एलएलडीबी सिर्फ ऊर्ध्वाधर स्क्रॉलबार को उड़ाता है। –

+1

मुझे एलएलडीबी के बारे में क्या पसंद है यह है कि इसका वाक्यविन्यास अधिक संरचित है। जीडीबी थोड़ा और मुक्त गठित है। –

उत्तर

39

एलएलडीबी क्लैंग समेत ऐप्पल के उपकरण के एलएलवीएम सूट का हिस्सा है। बेहतर प्रदर्शन सहित कई बेहतर सुविधाएं हैं। वहाँ GDB उपयोगकर्ताओं यहाँ के लिए एक त्वरित परिचय है: http://lldb.llvm.org/tutorial.html

हालांकि ...

आप developer.apple.com पर मंचों पर एक यात्रा लेने के लिए चाहते हो सकता है। फिलहाल एलएलडीबी के साथ मुद्दों के बारे में चिंतित है (एक्सकोड 4.3.1 में)। एक बुरा मुद्दा, जो ऐप्पल के लोगों ने पुष्टि की है, यह है कि कदम उठाने के दौरान ivars देखना आपको गलत मान दिखा सकता है।

+8

वह त्रुटि है कि आप मुझे समय के लिए जीडीबी का उपयोग क्यों करेंगे :) –

+0

इस मुद्दे का जिक्र करने के लिए धन्यवाद! मैं एलएलडीबी डीबगर ने मुझे दिखाए जाने के बारे में पागल हो रहा था। यह काफी असंभव था। जीडीबी वास्तव में बेहतर काम करता है। –

+0

हैलो। यह अब एक साल हो गया है। क्या एलएलडीबी अभी भी बहुत अच्छा नहीं है? – Voldemort

9

1. परिभाषा के अंतर से

पहले, GDB क्या है?

,
जीएनयू डीबगर, आम तौर पर सिर्फ GDB कहा जाता है और एक निष्पादन योग्य फ़ाइल के रूप में gdb नाम "GDB जीएनयू सॉफ्टवेयर प्रणाली के लिए मानक डिबगर कि" जीएनयू ऑपरेटिंग सिस्टम के लिए मानक डिबगर है। हालांकि, इसका उपयोग जीएनयू ऑपरेटिंग सिस्टम तक सख्ती से सीमित नहीं है; यह एक पोर्टेबल डीबगर है जो कई यूनिक्स जैसी प्रणालियों पर चलता है और कई प्रोग्रामिंग भाषाओं के लिए काम करता है, जिनमें एडा, सी, सी ++, ऑब्जेक्टिव-सी, फ्री पास्कल, फोरट्रान, जावा 1 और आंशिक रूप से अन्य शामिल हैं। 2

(विकिपीडिया से उद्धरण)

दूसरा, LLDB क्या है?

जमीन "प्रतिस्थापन से" LLDB एक डिबगर पुन: प्रयोज्य घटकों का एक सेट के रूप में बनाया है जो इस तरह बजना अभिव्यक्ति पार्सर और LLVM disassembler।
LLDB जैसे बड़े LLVM परियोजना में अत्यधिक लाभ उठाने मौजूदा पुस्तकालयों, एप्पल के है कि " जीडीबी के लिए, एलएलवीएम कंपाइलर्स के साथ निकट समन्वय में विकसित किया गया ताकि आपको प्रवाह नियंत्रण और डेटा निरीक्षण में व्यापक क्षमताओं के साथ अत्याधुनिक डिबगिंग मिल सके। Xcode 5 से शुरू होने पर, सभी नई और पूर्ववर्ती विकास परियोजनाओं को एलएलडीबी का उपयोग करने के लिए स्वचालित रूप से पुन: कॉन्फ़िगर किया जाता है। मानक एलएलडीबी इंस्टॉलेशन आपको परिचित जीडीबी कमांड के साथ संगत होने के लिए डिज़ाइन किए गए कमांड का विस्तृत सेट प्रदान करता है। मानक कॉन्फ़िगरेशन का उपयोग करने के अलावा, आप अपनी आवश्यकताओं के अनुरूप एलएलडीबी को आसानी से अनुकूलित कर सकते हैं।

(ऐप्पल आधिकारिक साइट से उद्धरण)
/* मैंने कथन साबित करने के लिए वास्तविक/व्यावहारिक डेटा खोजने की कोशिश की: एलएलडीबी बड़े कार्यक्रमों को डीबग करते समय जीडीबी से पहले से कहीं अधिक तेज है।) हालांकि, मुझे यह नहीं मिला। अगर कोई संबंधित डेटा वाला कोई है, तो कृपया इस आलेख को संपादित करें। */

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

2।डीबगर कमांड उपयोग के अंतर से

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

यह दो डीबगर आदेशों के अंतर की तुलना करने के लिए नीचे एक अच्छा लिंक है।
मुझे नीचे विस्तार लिंक करते हैं: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.html

http://lldb.llvm.org/lldb-gdb.html

यह स्पष्ट रूप से इंगित करता है और आदेश के अंतर आयोजन करता है।

यदि साइट अब और पहुंच योग्य नहीं है, तो मैं लिंक साइट से नीचे दिए गए आदेशों का प्रमुख अंतर सारांशित करता हूं।

Execution command difference between GDB and LLDB Break-Point command difference between GDB and LLDB Examining variable command difference between GDB and LLDB Examining thread state command difference between GDB and LLDB

3. करके व्यक्तिगत राय

LLDB पूरी तरह से प्राथमिक डिबगर के रूप में डिफ़ॉल्ट रूप से Xcode IDE 5 से एकीकृत किया गया है।
उस समय से, एलएलडीबी स्थिरता, प्रदर्शन मुद्दों और बग के बारे में कुछ शिकायत रिपोर्ट हुई है।
हालांकि, एलएलडीबी परियोजना के साथ एलएलवीएम को दुनिया में कोर ओपन-सोर्स प्रोजेक्ट में से एक के रूप में अविश्वसनीय रूप से सुधार और अपग्रेड किया जा रहा है।
तो, मुझे लगता है कि, कम से कम, एलएलडीबी का उपयोग ऐप्पल विकास पर्यावरण के लिए किया जाना चाहिए क्योंकि एलएलडीबी ने जीडीबी की स्थिति चुरा ली है और कम से कम ऐप्पल दुनिया में प्राथमिक डिफ़ॉल्ट डीबगर है।
(सितंबर, 2016 के अंत में, एलएलवीएम और एलएलडीबी को एकीकृत करने वाला एक्सकोड 8 आधिकारिक तौर पर जारी किया गया था, जिसका अर्थ है कि एलएलवीएम/एलएलडीबी एक्सकोड के लिए डिफ़ॉल्ट टूल-चेन है क्योंकि
लेकिन, हम सभी को पहले ही पता है कि जीडीबी है ऐतिहासिक रूप से और दृढ़ता से सत्यापित और युद्ध-सिद्ध डीबगर 30 वर्षों से अधिक है, जो कि कमाल है।

तो, मैं कहूंगा कि ...
मैं बजना, उपयोग gdb का उपयोग करते समय अच्छा संयोजन या जोड़ी के रूप में जीसीसी संकलक का उपयोग करते समय क्योंकि lldb, LLVM पर आधारित है जबकि gdb एक जीएनयू डिबगर है lldb उपयोग करना चाहते हैं।

मेरी इच्छा है कि यह आपके लिए सहायक हो।

धन्यवाद।