Analysetool Speicherlayout



  • Hallöle,

    Gibt es ein Analysetool, welches das Speicherlayout einer Klasse inklusive deren Member, Member der Member, usw. anzeigen und evtl sogar grafisch darstellen kann?

    Grüße,
    PI



  • Minus der grafischen Darstellung kann das eigentlich jeder Debugger.



  • Ich will aber ne grafische Darstellung.



  • ddd



  • Jup, mit ddd habe ich auch schon in C Speicherabbilde grafisch angezeigt bekommen. Ist insbesondere bei Pointern und structs sehr schön. Mit C++ dürfte das sicherlich auch funktionieren.



  • Ich meine _keinen_ Debugger.



  • 314159265358979 schrieb:

    Ich meine _keinen_ Debugger.

    Steffo schrieb:

    Jup, mit ddd habe ich auch schon in C Speicherabbilde grafisch angezeigt bekommen. Ist insbesondere bei Pointern und structs sehr schön. Mit C++ dürfte das sicherlich auch funktionieren.

    http://webscripts.softpedia.com/scriptScreenshots/GNU-DDD-Screenshots-26910.html



  • Was spricht gegen Debugger?



  • @Steffo:
    Nur Pi's Sturheit.
    Und/oder die strenggeheimen Gründe/zusätzlichen Anforderungen die er uns nicht verraten darf.



  • hustbaer schrieb:

    @Steffo:
    Nur Pi's Sturheit.

    Genau, Pi ist einfach total irrational, das weiß man aber...



  • Wieso muessen die Linux GUIs immer so haesslich sein? Das sieht ja aus wie Windows 3.11. 👎

    Dass Pi ein bockiges Kleinkind ist, ist ja schon laenger bekannt.



  • IDA PRO

    Ist ein Disassembler kein Debugger.^^



  • Ich will den Code nicht kompilieren müssen, um mir das anzusehen. Wozu auch.



  • Ich glaub so ein Programm gibt es nicht.^^

    Versuch aus dem Code in deiner Klasse einfach die entsprechenden Opcodes zu generieren. Das packste dann in den Virtuellen Adressraum und ließt es mit ReadProcesMemory oder so aus.

    Aus dem Hochsprachen Code die passenden Opcodes generieren zu lasse ist denke ich mal das schwierigste.(Stichwort Compiler Entwicklung).

    Opcode in den VirtualAdress Space laden.
    [Du solltest die Opcodes aber noch anpassen das dir der ganze kram nicht sofort abstürtzt.^^]

    #include <iostream>
    int main()
    {
    char opcodes[]="\x90"; // NOP
    int (*call)();
    
    call = (int (*)()) opcodes;
    
    (*call)();
    
    return 0;
    }
    


  • 314159265358979 schrieb:

    Ich will den Code nicht kompilieren müssen, um mir das anzusehen. Wozu auch.

    Wie soll das gehen? Das Speicherlayout hängt doch vom Compiler ab.



  • Bashar schrieb:

    Wie soll das gehen? Das Speicherlayout hängt doch vom Compiler ab.

    Indem man es lediglich Schemenhaft aufzeichnet und davon ausgeht, dass der Compiler keine Paddingbytes einbaut.


  • Mod

    314159265358979 schrieb:

    Bashar schrieb:

    Wie soll das gehen? Das Speicherlayout hängt doch vom Compiler ab.

    Indem man es lediglich Schemenhaft aufzeichnet und davon ausgeht, dass der Compiler keine Paddingbytes einbaut.

    Du möchtest ein UML-Diagramm erzeugen?



  • SeppJ schrieb:

    314159265358979 schrieb:

    Bashar schrieb:

    Wie soll das gehen? Das Speicherlayout hängt doch vom Compiler ab.

    Indem man es lediglich Schemenhaft aufzeichnet und davon ausgeht, dass der Compiler keine Paddingbytes einbaut.

    Du möchtest ein UML-Diagramm erzeugen?

    Um SeppJ's Antwort aufzuführen: Microsoft's Visio hat ein Reverse-Engineering Plugi-In für Visual Studio.



  • 314159265358979 schrieb:

    Bashar schrieb:

    Wie soll das gehen? Das Speicherlayout hängt doch vom Compiler ab.

    Indem man es lediglich Schemenhaft aufzeichnet und davon ausgeht, dass der Compiler keine Paddingbytes einbaut.

    Wenn du es schemenhaft sehen willst, dann mach nen Screenshot vom Source-Code.


  • Mod

    Tippgeber schrieb:

    Um SeppJ's Antwort aufzuführen: Microsoft's Visio hat ein Reverse-Engineering Plugi-In für Visual Studio.

    Um meine Antwort noch weiter auszuführen: So etwas fällt bei so ziemlich jedem Dokumentations- oder (statischem) Codeanalysetool nebenher ab. Da Pi, wenn ich mich recht erinnere, auf Mac entwickelt, wäre da vielleicht Doxygen was für ihn. Das kann, entgegen seinem Haupteinsatzbereich, auch einfach nur Bildchen von Klassen erzeugen, ganz ohne Doku drumherum.


Log in to reply