Ich verschiebe Entwicklung zu Linux, aber ich konnte nicht finden, wie ich eine Ausgabe ähnlich/d1reportSingleClassLayout von MSVC++ unter g ++ oder clang ++ erhalten kann. Wenn diese Compiler keine solche Funktion haben, gibt es ein externes Tool, das ähnliche Visualisierungen bereitstellt?Was ist das Linux-Äquivalent zu MSVC++/d1reportSingleClassLayout?
7
A
Antwort
7
Sie müssen die Datei mit Debugging-Informationen kompilieren (-g
Option) und dann verwenden, um das Strukturlayout anzuzeigen. pahole
ist normalerweise aus dem dwarves
Paket (source; on GitHub; in Ubuntu) erhältlich.
$ 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 */
};
Die -C
Option können Sie auswählen, welche Klasse/Struktur zu untersuchen.
Wenn Sie keinen Zugriff auf haben, können Sie die gleichen Informationen in einer viel weniger lesbaren Form von readelf -wi myfile.o
oder eu-readelf -winfo myfile.o
erhalten. Das Dokument https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf beschreibt neben anderen dwarves
Werkzeugen.
1
Sie können es auch tun with the Clang frontend.
0
Wie wäre es mit -fdump-class-hierarchy
unterstützt von g ++?
Verwandte Themen
- 1. Was ist das Äquivalent zu „OnBackKeyPress“
- 2. Was ist das Linux-Äquivalent zu MAXDWORD?
- 3. Was ist das? Art?
- 4. .aktionserweiterung ... was ist das?
- 5. Was ist das ws: //?
- 6. Reflect.js, Was ist das?
- 7. Was ist das (())?
- 8. Was ist 'das' ist Javascript
- 9. Was bedeutet * nix? Und was ist das Verhältnis zu Ruby?
- 10. Was ist das nächste, was MATLAB zu Namespaces hat?
- 11. _NSZombie_NSKeyValueUndefiniertGetter - Was ist das?
- 12. Nebeneffekt - was ist das?
- 13. Was ist das 'Ausdrucksproblem'?
- 14. Was ist das Chromobjekt?
- 15. Was ist das Projekt, das asp.mvc verzweigt?
- 16. Was ist das? Template-Methode oder was?
- 17. Was ist das berühmteste Versionskontrollsystem?
- 18. Binär Hashing - was ist das?
- 19. Was ist das Attribut g_editable?
- 20. Oktett String: Was ist das?
- 21. Haskell Mustervergleich - was ist das?
- 22. Deklarative Sicherheit - was ist das?
- 23. Android Studio - Was ist das?
- 24. Was ist das ?! $ (mehrfache Parameter?)
- 25. Was ist das flexibelste Layout?
- 26. Was ist das "aws_security_token" für
- 27. Valgrind 'Lärm', was ist das?
- 28. PhoneGap setKeepCallback - Was ist das?
- 29. Was ist das Symbol "_ZN7android16CameraParameters9isPreviewE"?
- 30. Was ist das Apache-Prozessmodell?
Sie wären besser dran, das auf Stack-Überlauf zu fragen, da dies wirklich mehr eine C++ Frage als alles andere; bestimmte Compilerfunktionen wie diese sind für das Betriebssystem, auf dem der Compiler läuft, nicht sehr relevant. – delicateLatticeworkFever
Ja, fing den Schnitt innerhalb von 5 min;) Thx. Ich habe es auch markiert. – delicateLatticeworkFever
Danke für Ihre schnellen Antworten! Ich dachte, da ich eine Linux-Lösung möchte, wäre es hier angebracht. Entschuldigung für den Lärm. –