disassembler unter linux
-
hallo, immer öfter sehe ich hier im forum,
das leute wohl mir nix dir nix an den maschinencode ihrer
programme kommenkann 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 + kcachegrindda hat man wenigstens eine übersicht (callgraph) über alle zeitkritischen
funktionen und kann sich dann gezielt den asm code ansehenjedenfalls 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.