Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
tux:debug_hello_world [2011/10/09 15:20] wikisysop [Disassemble Binary] |
tux:debug_hello_world [2011/10/10 15:13] (aktuell) wikisysop [Disassemble Binary] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
[[:tux|{{ :linux.png?40|}}]] | [[:tux|{{ :linux.png?40|}}]] | ||
- | ===== "Hello, world" im Debugger ===== | + | ===== "Hello World!" im Debugger ===== |
Das Debuggen eines Programms gehört sicherlich zu den anspruchsvollsten Angelegenheiten, kann aber unter gegebenen Umständen äußerst nützlich sein. | Das Debuggen eines Programms gehört sicherlich zu den anspruchsvollsten Angelegenheiten, kann aber unter gegebenen Umständen äußerst nützlich sein. | ||
Zeile 69: | Zeile 69: | ||
End of assembler dump.</xterm> | End of assembler dump.</xterm> | ||
- | <xterm><fc #800000>(gdb)</fc><fc #008000>break main</fc> | + | <xterm><fc #800000>(gdb)</fc> <fc #008000>break main</fc> |
Breakpoint 1 at 0x80483bd: file firstprog.c, line 6.</xterm> | Breakpoint 1 at 0x80483bd: file firstprog.c, line 6.</xterm> | ||
Zeile 166: | Zeile 166: | ||
Nicht weiter von Belang aber die mov-Instruktion möchte die Adresse >><fc #FF00FF>0x80484b0</fc><< dort hin schreiben. Aber warum? Was ist so besonders an der Speicheradresse >><fc #FF00FF>0x80484b0</fc><<? Finden wir es raus und lassen wir uns mal die ersten 8 Byte dieser Adresse anzeigen: | Nicht weiter von Belang aber die mov-Instruktion möchte die Adresse >><fc #FF00FF>0x80484b0</fc><< dort hin schreiben. Aber warum? Was ist so besonders an der Speicheradresse >><fc #FF00FF>0x80484b0</fc><<? Finden wir es raus und lassen wir uns mal die ersten 8 Byte dieser Adresse anzeigen: | ||
- | <xterm><fc #800000>(gdb)</fc> (gdb) <fc #008000>x/8xb 0x80484b0</fc> | + | <xterm><fc #800000>(gdb)</fc> <fc #008000>x/8xb 0x80484b0</fc> |
<fc #FF00FF>0x80484b0</fc>: 0x48 0x65 0x6c 0x6c 0x6f 0x20 0x57 0x6f</xterm> | <fc #FF00FF>0x80484b0</fc>: 0x48 0x65 0x6c 0x6c 0x6f 0x20 0x57 0x6f</xterm> | ||
Zeile 282: | Zeile 282: | ||
=> 0x80483df <main+43>: <fc #0000FF>leave</fc> | => 0x80483df <main+43>: <fc #0000FF>leave</fc> | ||
<fc #800000>(gdb)</fc></xterm> | <fc #800000>(gdb)</fc></xterm> | ||
+ | |||
+ | Mächtig viel Zenober für ein Programm, welches in gerade mal 2 Millisekunden vom Prozessor ausgeführt wird. Ich habe ein ganzes Wochenende mit diesem Artikel verbracht, habe aber viel dabei gelernt ;-) | ||
+ | |||
+ | <xterm>$ <fc #008000>time ./a.out</fc> | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | Hello World! | ||
+ | |||
+ | real 0m0.002s | ||
+ | user 0m0.000s | ||
+ | sys 0m0.000s</xterm> | ||
+ | |||
+ | --- //pronto 2011/10/09 15:21// |