Tôi đang chuyển phát triển sang Linux nhưng tôi không thể tìm thấy cách tôi có thể nhận được kết quả tương tự như/d1reportSingleClassLayout từ MSVC++ theo g ++ hoặc clang ++. Nếu các trình biên dịch không có một tính năng như vậy, có một công cụ bên ngoài cung cấp trực quan tương tự?Linux tương đương với tùy chọn/d1reportSingleClassLayout của MSVC++ là gì?
7
A
Trả lời
7
Bạn cần biên dịch tệp có thông tin gỡ lỗi (-g
) sau đó sử dụng pahole
để hiển thị bố cục struct. pahole
thường có sẵn từ gói 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 */
};
Tùy chọn -C
cho phép bạn chọn lớp/cấu trúc cần kiểm tra.
Nếu bạn không có quyền truy cập vào pahole
, bạn có thể nhận được thông tin tương tự ở dạng ít dễ đọc hơn từ readelf -wi myfile.o
hoặc eu-readelf -winfo myfile.o
. Giấy https://www.kernel.org/doc/ols/2007/ols2007v2-pages-35-44.pdf mô tả pahole
cùng với các công cụ dwarves
khác.
1
Bạn cũng có thể làm điều đó with the Clang frontend.
0
Làm thế nào về -fdump-class-hierarchy
được hỗ trợ bởi g ++?
Các vấn đề liên quan
- 1. MSVC tương đương với __builtin_popcount?
- 2. Tương đương với Linux mkdir -p trong Windows là gì?
- 3. Tương đương với Linux với MAXDWORD là gì?
- 4. Tương đương với Linux là gì: MultiByteToWideChar & WideCharToMultiByte?
- 5. Tương đương với _emit trên Linux là gì?
- 6. Tương đương với C++ cho AutoResetEvent trong Linux là gì?
- 7. Dreamweaver tương đương với Linux
- 8. Tương đương với ldd của Linux trên cửa sổ là gì?
- 9. Gcc trên Linux tương đương với các phần quan trọng của microsoft là gì?
- 10. Tương đương GWT của setTimeout là gì?
- 11. Python tương đương với Perlbrew là gì?
- 12. Tương đương C# của MsgWaitForMultipleObjects là gì?
- 13. Điều gì sẽ tương đương với Win32 API trong Linux?
- 14. WPF tương đương với ControlPaint.Light là gì?
- 15. Tương đương .NET của JMX là gì?
- 16. Scala tương đương với ClassName.class của Java là gì?
- 17. Python tương đương với DBI của Perl là gì?
- 18. Tương đương với C# của java.util.regex là gì?
- 19. tương đương với = ~ của ruby trong php là gì?
- 20. Tương đương với C++ của UINT32_MAX là gì?
- 21. Scala tương đương với khối tĩnh của Java là gì?
- 22. Tương đương với preg_quote của PHP là gì?
- 23. Tương đương với POS32 của WinIX là gì?
- 24. Tương đương với Ruby cho StringReader của Java là gì?
- 25. Tương đương java với String.fromCharCode của javascript là gì?
- 26. Python tương đương với "kiểm tra" của Ruby là gì?
- 27. Tương đương với InfiniteIterator của PHP trong .NET là gì?
- 28. C# tương đương với dynamic_cast của C++ là gì?
- 29. PHP tương đương với UNHEX của MySQL() là gì?
- 30. Tương đương với JavaScript của C# Server.URLEncode là gì?
Bạn muốn được tốt hơn yêu cầu này trên stack overflow, vì đây là thực sự hơn một C++ câu hỏi hơn bất cứ điều gì khác; các tính năng trình biên dịch đặc biệt như thế này không liên quan gì đến hệ điều hành mà trình biên dịch đang chạy. – delicateLatticeworkFever
Đúng, bắt được bản chỉnh sửa trong vòng 5 phút;) Thx. Tôi cũng đã gắn cờ nó. – delicateLatticeworkFever
Cảm ơn bạn đã trả lời nhanh chóng! Tôi nghĩ rằng kể từ khi tôi muốn có một giải pháp Linux nó sẽ là thích hợp ở đây. Xin lỗi vì tiếng ồn. –