2010-03-19 18 views
6

में जीडीबी देखता है कि प्रोग्राम जानकारी तक पहुंचने के लिए मेरे पास लिनक्स पर सी ++ में लिखे गए एक प्रोग्राम है, जो -g के साथ संकलित है।सीडी ++

जब मैंने इसे gdb के तहत चलाने के लिए, मैं कर सकते हैं

1) set breakpoints 
2) at those breakpoints, print out variables 
3) see the stackframe 
4) given a variable that's a structure, print out parts of the structure (i.e. how ddd displays information). 

अब, यह देखते हुए कि मेरे कार्यक्रम 'जी' के साथ संकलित किया गया है - वहाँ वैसे भी है कि मैं अपने कार्यक्रम के भीतर ही इस शक्ति का उपयोग कर सकते है?

आईई। यह देखते हुए कि मेरे कार्यक्रम 'जी' के साथ संकलित किया गया है, वहाँ कुछ

std::vector<string> getStackFrame(); 

समारोह मैं निष्पादन की वर्तमान बिंदु पर वर्तमान stackframe प्राप्त करने के लिए कॉल कर सकते हैं क्या है?

एक वस्तु के लिए सूचक को देखते हुए और यह प्रकार है ... मैं

std :: वेक्टर getClassMember (CLASS_NAME) कर सकते हैं;

?

मुझे एहसास है कि डिफ़ॉल्ट जवाब "नहीं, सी ++ आत्मनिरीक्षण के उस स्तर का समर्थन नहीं करता है" - हालांकि, मुझे याद है कि मैं लिनक्स पर हूं, मेरा प्रोग्राम "-g" के साथ संकलित है, और जीडीबी इसे कर सकता है, इतनी स्पष्ट रूप से inforamtion वहाँ है। प्रश्न यह है: क्या इसे एक्सेस करने के लिए कुछ एपीआई है?

संपादित करें: पीएस नायर्स, मुझे इस प्रश्न को बंद करने का कोई कारण देखना अच्छा लगेगा।

+1

क्यों किसी को भी एक पूरी तरह से वैध सवाल को बंद करना चाहते हैं? –

उत्तर

2

मुझे ऑब्जेक्ट फ़ाइलों से फ़ंक्शन नाम प्राप्त करने के लिए libbfd का उपयोग करना याद है। यह ऑब्जेक्ट प्रारूपों को पढ़ने के लिए एक लाइब्रेरी है, शायद आप इसका उपयोग करके अन्य डीबग जानकारी भी पढ़ सकते हैं। (मैं ईमानदारी से पता नहीं है)

http://www.skyfree.org/linux/references/bfd.pdf

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