2012-12-14 5 views
7

के साथ टाइप पता है तो मेरे पास कोर डंप है और मैं कोर डंप को gdb के साथ देख रहा हूं।मैं बूस्ट का मूल्य कैसे देख सकता हूं :: अगर मुझे gdb

मैं सोच रहा था कि किसी बूस्ट के मूल्य की जांच करने में सक्षम होने का कोई तरीका है :: gdb में कोई मान?

कोर में, मैं बढ़ावा किसी को पता था और इसलिए मैं एक प्लेसहोल्डर के लिए यह कास्टिंग अगर मैं मूल्य की जांच कर सकता है देखने के लिए कोशिश की, लेकिन मैं कम गिर गया। मुझे पता है कि किसी भी प्रकार का बढ़ावा किसी भी प्रकार से हस्ताक्षरित नहीं है, तो क्या इस प्रकार को जानने वाले किसी भी मूल्य को देखने का कोई तरीका है?

(gdb) print ('boost::any::placeholder')(*(('boost::any'*)0x00007f263fa27730).content) 
warning: can't find linker symbol for virtual table for `boost::any::placeholder' value 
warning: found `boost::any::holder<bool>::~holder()' instead 
$129 = warning: can't find linker symbol for virtual table for `boost::any::placeholder' value 
warning: found `boost::any::holder<bool>::~holder()' instead 
warning: can't find linker symbol for virtual table for `boost::any::placeholder' value 
warning: found `boost::any::holder<bool>::~holder()' instead 
{ 
    _vptr.placeholder = 0x7f2a9a662560 
} 

इस मामले के साथ कोई भी मदद की सराहना की जाएगी। धन्यवाद!

+1

क्या आपने किसी भी स्रोत को बढ़ावा देने पर देखा है? किसी भी बूस्ट में किसी धारक को पॉइंटर होता है, जिसका बच्चा प्रकार आयोजित प्रकार पर टेम्पलेट किया जाता है, अगर मुझे सही याद आती है। किसी भी गति को गतिशील प्रकार नहीं है, यह एक गतिशील प्रकार का मालिक है। – Yakk

+1

मुझे आश्चर्य है कि कोई 'बूस्ट :: किसी भी' के लिए एक जीडीबी सुंदर प्रिंटर लिख सकता है। आखिरकार, आपको सामग्री के प्रकार को भी नहीं जानना है, क्योंकि आयोजित प्रकार के 'vtable' सूचक को पता है कि सामग्री का प्रकार क्या है। हमें अधिक gdb सुंदर प्रिंटर की आवश्यकता है! – enobayram

उत्तर

1

boost::any एक आंतरिक वर्ग placeholder जो डेटा सामग्री रखती है। उपयोग करने का प्रयास करें:

(gdb) print (*((boost::any::holder<unsigned long>*)((anyInstance).content))).held 
संबंधित मुद्दे