gdb

2010-04-21 17 views
12

में std :: मानचित्र मान मुद्रित करने के लिए कैसे करें मेरे पास एक std :: map < std :: string, std :: string> cont;gdb

मैं gdb में cont ["some_key"] cont देखना चाहता हूं। जब मैं कोशिश कर रहा हूँ

पी शेष भाग [ "some_ket"]

मैं इस संदेश को हो रही है: तर्क आप ऑपरेटर [] क्या समारोह चाहता है में परिवर्तित नहीं किया जा सकता है को पारित करने की कोशिश की में से एक।

मैं जीएनयू जीडीबी रेड हैट लिनक्स (6.3.0.0-1.162.el4rh) का उपयोग कर रहा हूं। धन्यवाद

+3

करुणा। gdb7.0 सीधे इसे प्रिंट कर सकता है: http://sourceware.org/gdb/wiki/STLSupport –

+0

यह सही उत्तर है। सुविधा पहले से मौजूद है, आप बस पुराने वितरण का उपयोग कर रहे हैं जिसने इसे एकीकृत नहीं किया है। हाल ही में फेडोरा का उपयोग करने पर विचार करें, या उपकरण बनाएं (यह केवल जीडीबी हो सकता है, हालांकि यह संभव है कि आपको जी ++ और बिनुटिल्स भी चाहिए) स्वयं स्रोत से। –

उत्तर

6

नवीनतम जीडीबी में पाइथन समर्थन है जिसमें कोई भी आसानी से किसी भी स्टिल संरचना की सामग्री को मुद्रित करने के लिए एक फ़ंक्शन लिख सकता है। हालांकि आपको एपीआई सीखना होगा और स्क्रिप्ट लिखना होगा। सौभाग्य से जीसीसी 4.5 बुद्धिमान ढंग से एसटीएल डेटा संरचनाओं को संभालने के लिए जीडीबी प्राप्त करने के लिए आवश्यक पायथन स्क्रिप्ट के साथ शिप करेगा।

संपादित करें: आपको जीसीसी 4.5 (जिस तरह से पहले से ही जारी किया जा चुका है) के लिए इंतजार नहीं करना है, आप केवल grab the code from SVN कर सकते हैं।

1

जीडीबी सी ++ ऑपरेटर ओवरलोडिंग को समझ में नहीं आता है।

+0

जैसा कि मैं समझता हूं कि डीबग प्रक्रिया के दौरान कुंजी-मूल्य देखने का कोई तरीका नहीं है? –

+0

आसानी से नहीं। std :: नक्शा एक जटिल डेटा संरचना है। आप (कार्यान्वयन-विशिष्ट) निजी सदस्यों का अनुसरण कर सकते हैं और देख सकते हैं कि क्या हो रहा है, लेकिन यह काफी परेशान है। @ एडी का जवाब मदद कर सकता है, लेकिन मैंने उस सामान के साथ बिल्कुल नहीं खेला है। –

6

आप अपनी खुद की डंप कार्यों लिख सकते हैं और उन्हें फोन:

(gdb) call dump(m) 

इस सूत्र देखें: http://www.mail-archive.com/[email protected]/msg02109.html

मैं GDB सहायक मैक्रोज़ के बारे में उत्सुक हूँ।

+1

[उस धागे पर अगला संदेश] (http://www.mail-archive.com/[email protected]/msg02189.html) एक जीडीबी मैक्रो दिखाता है जो बहुत अच्छी तरह से काम करता है। बाद के संदेश में कुछ छोटे सुधार शामिल हैं। – mMontu