std::unique_ptr
अच्छे हैं, लेकिन मैं उन्हें कम आरामदायक जब DDD या gdb में डीबगिंग पाते हैं।डीडीडी (या जीडीबी) में unique_ptr के साथ सी ++ 11 कोड डीबग कैसे करें?
मैं gdb सुंदर प्रिंटर कि जीसीसी का हिस्सा है (जैसे, /usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.py
) कर रहे हैं का उपयोग कर रहा हूँ। यही कारण है कि पठनीयता के लिए एक बड़ी जीत, उदाहरण के लिए है:
$ print pTest
std::unique_ptr<MyType> containing 0x2cef0a0
हालांकि
, सूचक dereferencing काम नहीं करता है:
$ print *pTest
Could not find operator*.
जब मैं मूल्य का उपयोग करने की जरूरत है, मैं मैन्युअल रूप से सूचक कॉपी करने के लिए है और , सही प्रकार पर यह डाली उदाहरण के लिए:
print *((MyType*) 0x2cef0a0)
तो प्रक्रिया अभी भी चल रहा है, इस संस्करण में काम करता है (अभी भी बदसूरत लेकिन बेहतर):
print *pTest.get() // will not work if analyzing a core dump
DDD में Display *pTest
को स्पष्ट दृष्टिकोण या तो काम नहीं करता। यह केवल निम्न त्रुटि में परिणाम है:
<error: Could not find operator*.>
वहाँ (कार्यप्रवाह की तरह मैं अपने बोझिल समाधानों के साथ क्या तोड़ने के बिना) DDD में unique_ptr साथ सी ++ 11 कोड डिबग करने के लिए कोई तरीका है?
मुझे gdb कमांड का उपयोग करने से डर नहीं है, लेकिन डीडीडी एकीकरण एक प्लस होगा। उदाहरण के लिए, डेटा संरचनाओं में केवल पॉइंटर्स केवल डबल-क्लिक करके टाइपिंग से अक्सर तेज़ होते हैं।
मैं पहले से ही बहुत प्रिंटर छोड़ने का प्रयास किया, लेकिन यह भी इष्टतम नहीं है।
print pTest._M_t->_M_head_impl
एक गूंगा सवाल की तरह लग सकता है, लेकिन आप का निर्माण करने के था स्क्रैच से आपके बॉक्स पर जीसीसी कंपाइलर? या यह एक आरपीएम अपडेट था? कुछ सी ++ 11 कोड डीबग करने का प्रयास करते समय मुझे हाल ही में जीडीबी के साथ कोई समस्या थी, और पाया कि मैं जीडीबी को फिर से संकलित नहीं करूंगा। मुझे पूरा यकीन है कि यहां मामला नहीं है, लेकिन मैंने सोचा कि यह पूछने लायक हो सकता है। – Welshboy
@Welshboy मैं वर्तमान में आधिकारिक जीसीसी 4.8.2 (20140206) और जीडीबी 7 का उपयोग कर रहा हूं।आर्क लिनक्स से 7। –
आप इसे आजमा सकते हैं: http://stackoverflow.com/questions/322322/displaying-Dereferenced-stl-iterators-in-gdb और विशेष रूप से एक gdbinit फ़ाइल पर एक नज़र डालें। ऐसा लगता है कि आप बहुत सी कस्टम चीजें हैं जो आप जीडीबी कर सकते हैं। सौभाग्य। – Ben