Is there any compiler option in MS Visual C++ equivalent to GCC's -fdump-class-hierarchy? i.e. showing the virtual function table layout.
I'm quite certain there's not any documented switch. If you do a bit of looking at cl.exe, you can find various strings, some of which appear to be related to command line options. One of those says something like: "Partitioning (options = %s)\0nul\0map\0ast".
That "ast" may refer to an abstract syntax tree, which may imply that some sort of dump of the compiler's AST is possible -- but I haven't really looked in any detail to figure out what it's talking about, aimed at, or much of anything else. For that matter, the "ast" and "options = " may not be related at all. Even if it can dump ASTs, that doesn't necessarily mean it can tell you anything about vtable layout.
To make a long story short, there's enough there to make it difficult to rule out with real certainty. At the same time, there's little enough there that it would take a lot more work to do more than hint at the vague possibility that the compiler may have some undocumented ability to dump some internal structures.
try
cl.exe /d1reportAllClassLayout test.cpp
The output is something like:
class request_handlerAttribute size(8): +--- 0 | name 4 | sdl +--- class perfmonAttribute size(8): +--- 0 | name 4 | register | (size=3) +---
Found doing:
+ findstr /i class c1xx.dll > c1xx.txt
+ and then manually inspecting c1xx.txt
Hope it can help, Benedetto
PS: This obviously is an undocumented and unsupported switch.
Look also here for a similar switch.