2013-04-11 2 views
7

मैं विकास को लिनक्स में ले जा रहा हूं लेकिन मुझे नहीं पता कि मैं एमएसवीसी ++ से जी ++ या क्लैंग ++ के तहत/d1reportSingleClassLayout के समान आउटपुट कैसे प्राप्त कर सकता हूं। यदि इन कंपाइलर में ऐसी सुविधा नहीं है, तो क्या कोई बाहरी उपकरण है जो समान दृश्यता प्रदान करता है?एमएसवीसी ++ के विकल्प/d1reportSingleClassLayout के बराबर लिनक्स क्या है?

+1

के बाद से यह वास्तव में अधिक एक सी ++ किसी और चीज से सवाल यह है कि तुम्हें पता है, ढेर अतिप्रवाह पर इस पूछ बेहतर होगा; इस तरह की विशेष कंपाइलर विशेषताएं ओएस के लिए बहुत प्रासंगिक नहीं हैं जो संकलक चल रहा है। – delicateLatticeworkFever

+0

हाँ, संपादन को 5 मिनट के अंदर पकड़ा;) Thx। मैंने इसे भी ध्वजांकित किया है। – delicateLatticeworkFever

+0

आपके त्वरित प्रतिक्रिया के लिए धन्यवाद! मैंने सोचा कि चूंकि मैं एक लिनक्स समाधान चाहता हूं, यह यहां उचित होगा। शोर के लिए खेद है। –

उत्तर

7

आप जानकारी (-g विकल्प) डिबगिंग के साथ फ़ाइल को संकलित करने के तो struct लेआउट प्रदर्शित करने के लिए pahole का उपयोग की जरूरत है। pahole आमतौर पर dwarves पैकेज (source; on GitHub; in Ubuntu) से उपलब्ध है।

$ g++ -ggdb -c -o myfile.o myfile.cpp 
$ pahole -C MyClass myfile.o 
class MyClass { 
public: 

    int()(void) * *   _vptr.MyClass;  /*  0  4 */ 
    int      i;     /*  4  4 */ 
    const char *    c;     /*  8  4 */ 
    void MyClass(class MyClass *, const class MyClass &); 

    void MyClass(class MyClass *); 

    virtual void ~MyClass(class MyClass *, int); 


    /* size: 12, cachelines: 1, members: 3 */ 
    /* last cacheline: 12 bytes */ 
}; 

-C विकल्प आपको चुनने के लिए कौन सी कक्षा/संरचना का चयन करने देता है।

यदि आपके पास pahole तक पहुंच नहीं है तो आप readelf -wi myfile.o या eu-readelf -winfo myfile.o से बहुत कम पठनीय रूप में एक ही जानकारी प्राप्त कर सकते हैं। पेपर https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdfpahole अन्य dwarves उपकरण के साथ वर्णन करता है।

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