Przenoszę programowanie do systemu Linux, ale nie mogłem znaleźć sposobu na uzyskanie wyniku podobnego do/d1reportSingleClassLayout z MSVC++ pod g ++ lub clang ++. Jeśli ten kompilator nie ma takiej funkcji, czy istnieje narzędzie zewnętrzne zapewniające podobną wizualizację?Jaki jest Linux odpowiadający opcji MSVC++/d1reportSingleClassLayout?
7
A
Odpowiedz
7
Należy skompilować plik z informacjami o debugowaniu (opcja -g
), a następnie użyć pahole
, aby wyświetlić układ struktury. pahole
jest zwykle dostępny z pakietu 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 */
};
Opcja -C
pozwala wybrać klasę/strukturę do zbadania.
Jeśli nie masz dostępu do pahole
, możesz uzyskać te same informacje w znacznie mniej czytelnej formie od readelf -wi myfile.o
lub eu-readelf -winfo myfile.o
. Artykuł https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf opisuje pahole
obok innych narzędzi dwarves
.
1
Możesz to również zrobić with the Clang frontend.
0
Co powiedzieli na -fdump-class-hierarchy
obsługiwany przez g ++?
Powiązane problemy
- 1. Jaki jest R odpowiadający węzłowi SAS Enterprise Miner Score?
- 2. Jaki jest najbardziej elegancki sposób łączenia opcji?
- 3. Gesty i łańcuch odpowiadający
- 4. Jak sprawdzić łańcuch odpowiadający?
- 5. Jaki jest efekt zatwierdzenia git bez opcji -a?
- 6. Jaki jest cel opcji "Włącz natywne wsparcie XMLHTTP" w IE
- 7. Jaki jest odpowiednik opcji boost :: variant w bibliotece standardowej C++?
- 8. jaki jest cel opcji "--delete-after" w wget?
- 9. "jest" C# wiele opcji
- 10. Jaki jest najdokładniejszy sposób przetestowania kodu sieciowego w systemie Linux?
- 11. Jaki jest najlepszy kernel linux mechanizm blokujący dla określonego scenariusza
- 12. W jaki sposób pthread jest implementowany w jądrze Linux 3.2?
- 13. Jaki jest stan tworzenia aplikacji na iOS w systemie Linux?
- 14. Android odpowiadający NSUserDefaults w iOS
- 15. JavaScript odpowiadający ciągowi Ruby # scan
- 16. Cel C odpowiadający javascripts setTimeout?
- 17. najprostszy python odpowiadający R's grepl
- 18. W jaki sposób linux synchronizuje zliczanie prewencyjne
- 19. W jaki sposób przepełnienie bufora gniazda Linux?
- 20. W jaki sposób Linux wykonuje plik?
- 21. Jaki jest ekwiwalent Kotlina dla Java's String []?
- 22. myślnik odpowiadający składni nawiasów klamrowych basha?
- 23. Odpowiadający SOAP UI vs Wiosna-WS
- 24. Ustaw pierwszy obiekt odpowiadający w MFMailComposeViewController?
- 25. Strumień strumienia Java odpowiadający LINQ SelectMany()
- 26. Konwertuj znak A-Z na odpowiadający int.
- 27. Jaki jest sens _MERGE_PROXYSTUB?
- 28. Klient usługi Java Webservice UsernameToken odpowiadający PHP
- 29. W jaki sposób kompilowany jest aspx?
- 30. Czy istnieje python odpowiadający komendzie Unix `which`?
Byłbyś lepiej pytaniem to na przepełnienie stosu, ponieważ jest to naprawdę więcej pytanie C++ niż cokolwiek innego; szczególne funkcje kompilatora, takie jak te, nie są zbyt istotne dla systemu operacyjnego, na którym działa kompilator. – delicateLatticeworkFever
Tak, złapałem edycję w ciągu 5 minut;) Thx. Też to oznaczyłem. – delicateLatticeworkFever
Dziękujemy za szybkie odpowiedzi! Pomyślałem, że skoro chcę rozwiązania linuksowego, byłoby to odpowiednie tutaj. Przepraszamy za hałas. –