disassembler unter linux



  • hallo, immer öfter sehe ich hier im forum,
    das leute wohl mir nix dir nix an den maschinencode ihrer
    programme kommen

    kann mir mal wer erklären wie man das macht?
    Ich weiss zwar, das dies mit einen disassembler ziemlich einfach geht,
    die frage ist aber :

    wie findet man denn da den machinen-code einer bestimmen funktionen,
    oder sogar einer bestimmten code-zeile (was wohl nicht eindeutig ist,
    aber so die gegend)

    würde mich echt mal interessieren, welche tools man dafür einsetzen kann

    ich benutzte den gcc unter linux, mit kdevelop



  • Du kannst dem GCC einen Flag mitgeben, damit er Dir das Assembler-Listing ausspuckt. Musst mal in die manpage schauen, auswendig weiß ich den Flag leider auch nicht.



  • Hi!

    Bei GCC und der GCC Toolchain ist das relativ einfach. Da gibts das Tool

    objdump
    

    .

    Wenn du jetzt:

    objdump -d -S executable > executable.asm
    

    dann kriekst du ein disassemble von deinem executable.

    Wenn du dein executable jetzt noch mit

    gcc -g executable test.c
    

    , also mit dem Debuggerflag (-g) compilierst, dann hast sogar noch den C-Code im Assembler-Listing.

    mfg bauerb



  • danke für die antworten,

    und mit genau so etwas habe ich schon gerechnet,
    (seiten voller ausagen, die man durchsuchen muss)
    leider gibts irgendwie in kdevelop nichts mit disassemble, denn
    es macht ja eigentlich mehr sinn zu sagen :
    "IDE gib mir mal den asm-code von der funktion an der ich gerade arbeite"

    das was dem unter linux am nächsten kommt, ist
    valgrind + callgrind + kcachegrind

    da hat man wenigstens eine übersicht (callgraph) über alle zeitkritischen
    funktionen und kann sich dann gezielt den asm code ansehen

    jedenfalls ist das die "schönste" möglichkeit, die ich gefunden habe,
    in 1h rumprobieren



  • mir scheint, du willst einen debugger haben und keinen disassembler. gdb wäre hier die erste wahl.


Anmelden zum Antworten