рдЕрдкрдиреЗ рджреИрдирд┐рдХ рдХрд╛рд░реНрдп рдореЗрдВ, рд╕рднреА рдХреА рддрд░рд╣, рд╣рдореЗрдВ рдмрд╣реБрдд рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд╛рдо рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг: (рдУрдПрд╕ рд╡рд┐рдХрд╛рд╕, рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рддрдХрдиреАрдХреЛрдВ рдЬреИрд╕реЗ рдЗрдВрдЯреЗрд▓-рд╡реАрдЯреА, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ) рд╣рдореЗрдВ рдЕрдХреНрд╕рд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдХрд░реНрдиреЗрд▓ рд▓реЛрдбрд░ рдХреЛрдб рдбреАрдмрдЧ рдХрд░рдирд╛, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд▓реЛрдбрд░ рдбреАрдмрдЧ рдХрд░рдирд╛, рд╕рд╛рде рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдУрдПрд╕ рдбреАрдмрдЧ рдХрд░реЗрдВред рдпрд╣ рдпреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╢реАрд░реНрд╖рдХ рдореЗрдВ "рдЕрдзрд┐рдХрддрдо рддрдХ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдИ рдЕрдиреНрдп) рд╣рдо gdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдбреАрдбреАрдбреА рдЬреИрд╕реЗ рдЧреЛрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рд╕реАрдЬреАрдбреАрдмреА рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдбреАрдмрдЧрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдПред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдмреВрдЯ рд╕реЗрдХреНрдЯрд░ рдФрд░ рдмреВрдЯ рд▓реЛрдбрд░ рдХреЗ рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдХрд┐рд╕реА рднреА рдирдП рдУрдПрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЗрд╕ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдирд▓ рдмреВрдЯрд▓реЛрдбрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдУрдПрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреА "рдЬреАрд╡рди рдХреА рд╕рдЪреНрдЪрд╛рдИ" рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рд┐рдпрд▓ рдореЛрдб рдореЗрдВ BIOS рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж рдмреВрдЯ рд╕реЗрдХреНрдЯрд░ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдХреЛрдИ рдУрдПрд╕ рдЕрднреА рддрдХ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдмреВрдЯ рд╕реЗрдХреНрдЯрд░ рдХрд╛ рдХреЗрд╡рд▓ 512 рдмрд╛рдЗрдЯреНрд╕), рдЬрдмрдХрд┐ рдбрд┐рдмрдЧрд░ рдХреЗ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдУрдПрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рднрд╛рдЧ 2 рдореЗрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдмреВрдЯ рд╕реЗрдХреНрдЯрд░ рдФрд░ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдбреАрдмрдЧ рдХрд░реЗрдВ? рджрд░рдЕрд╕рд▓, рдореБрдЦреНрдп рдУрдПрд╕ рдбреАрдмрдЧрд░ (рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, "рдмреВрдЯрд▓реЛрдбрд░" рдХреЛ рд░реИрдо рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛, рдХрд░реНрдиреЗрд▓ рдФрд░ рдЙрд╕рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ (gdb рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реАред рдкреВрд░реНрдг рдУрдПрд╕ рдбреАрдмрдЧрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЖрдкрдХреЛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдЕрдВрджрд░ рдУрдПрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреАрдмрдЧрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг qemu рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ:
1. рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЪрд▓рд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд▓реЙрдкреА рдбрд┐рд╕реНрдХ рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреВрдЯ рдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):
qemu -fda ./boot.fdd -s -S -vnc none &
(рд╣рдо qemu рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдбрд┐рд╕реНрдХреЗрдЯ рд╕реЗ рдмреВрдЯ рд╣реЛрдЧреА рдЬрд┐рд╕рдХреА рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ "./boot .fdd"; "-s тАУS" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдорд╢реАрди рдирд┐рд▓рдВрдмрд┐рдд рдореЛрдб рдореЗрдВ рдФрд░ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдЧреА; "-рдмреИрдВрдХ рдХреЛрдИ рдирд╣реАрдВ" рдХрд╛ рдЕрд░реНрде рд╣реИ рдпрд╣ рдорд╢реАрди рдПрдХ рд╕рдХреНрд░рд┐рдп рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдмрд┐рдирд╛ рд╢реБрд░реВ рд╣реЛрдЧреА (рдЕрд░реНрдерд╛рдд рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, рдпрд╣ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдмреВрдЯрд▓реЛрдбрд░ рдФрд░ рдмреВрдЯ рд╕реЗрдХреНрдЯрд░ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд░ рд╕реНрдХреНрд░реАрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ); "&" - рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЪрд▓рд╛рдПрдВ)ред
2. рдЕрдм, gdb рдбреАрдмрдЧрд░ рдХреЛ рд╕реНрд╡рдпрдВ рдЪрд▓рд╛рдПрдВ:
$ gdb
GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<www.gnu.org/software/gdb/bugs>.
(gdb)
3. gdb рдбрд┐рдмрдЧрд░ рдореЗрдВ, qemu рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
(Gdb) target remote localhost: 1234
рд╡реИрд╕реЗ, рдпрд╣ рдкреЛрд░реНрдЯ рдиреЗрдЯрд╕реНрдЯреИрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
$ netstat тАУtlpn
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0: 1234 0.0.0.0:* LISTEN 4014/qemu
рдЙрд╕ рдкрддреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬрд╣рд╛рдБ рд╣рдо рдбрд┐рдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
(gdb) target remote localhost: 1234
Remote debugging using localhost: 1234
0x0000fff0 in ?? ()
(gdb)
рдЗрд╕ рдкрддреЗ рд╕реЗ, рдХреЛрдИ рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрд┐рдЬрд▓реА рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдирд╛ рдСрдкрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо BIOS рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ (рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдЕрдВрджрд░, рдмрд┐рд▓реНрдХреБрд▓) рд╕рд╣реА рдереЗред
4. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЛрдб рдХреЛрдб рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gdb рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
(gdb) set arch i8086
The target architecture is assumed to be i8086
(gdb)
5. рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдмреВрдЯ рд╕реЗрдХреНрдЯрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрд╣рд▓рд╛ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛:
(gdb) break * 0x7c00
Breakpoint 1 at 0x7c00
(gdb)
(BIOS
0x7c00 рдкрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ (рдПрдХ рдлреНрд▓реЙрдкреА рдбрд┐рд╕реНрдХ рд╕реЗ) рд╕реЗ рдкрд╣рд▓реЗ 512 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдЧрд╛)ред
6. рд╣рдо рдЕрдкрдиреЗ рдмреВрдЯ рд╕реЗрдХреНрдЯрд░ рдореЗрдВ рдХреВрджрддреЗ рд╣реИрдВ:
(gdb) c
Continuing.
Breakpoint 1, 0x00007c00 in ?? ()
(gdb)
7. рд╣реЛ рдЧрдпрд╛! рдЖрдк рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!
рдХрдИ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛрдб рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ RealMode рдореЛрдб рдореЗрдВ рдбреЗрдЯрд╛ рдПрдбреНрд░реЗрд╕рд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЦрдВрдб: рдСрдлрд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ: рдЦрдВрдб * 16 + рдСрдлрд╕реЗрдЯред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рдкрд╣рд▓реЗ 10 рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
(gdb) x/10i $cs*16+$eip
ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд╕реБрд╡рд┐рдзрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди gdb рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдХреЛрдб рдЦрдВрдб рдХреЗ рдЖрдзрд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
(gdb) x/10i $cs*16+$eip
0x80000: jmp 0x90013
0x80002: (bad)
0x80003: mov $0x8,%di
0x80006: add $0xff,%al
0x80008: aas
0x80009: add %al,(%bx,%si)
0x8000b: add %al,(%bx,%si)
0x8000d: add %al,(%bx,%si)
0x8000f: add %al,(%bx,%si)
0x80011: add %al,(%bx,%si)
(gdb)
рдЬрдмрдХрд┐ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрддрд╛ рд╣реИ:
Program received signal SIGTRAP, Trace/breakpoint trap.
0x00000000 in ?? ()
(gdb)
рджреВрд╕рд░реЗ, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
(gdb) break *0x80017
Breakpoint 4 at 0x800 17
... рддреЛ рдЙрд╕реЗ рдорд╛рд░реЛ ..:
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000 17 in ?? ()
(gdb)
... рдФрд░ рдлрд┐рд░ рд╕реНрдЯреЗрдкреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрдЬрд╛рдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рдФрд░ рд╕реНрд╡рдпрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000 17 in ?? ()
(gdb) stepi
0x000000 17 in ?? ()
(gdb)
рдЗрд╕рд▓рд┐рдП, рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
1. рдмреВрдЯрд▓реЛрдбрд░ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ:
Program received signal SIGTRAP, Trace/breakpoint trap.
0x00000023 in ?? ()
(gdb) x/10i $cs*16+$eip
0x80023: mov %ebx,0xb
0x80028: movl $0x0,0xf
0x80031: call 0x80c15
0x80034: or %ax,%ax
0x80036: je 0x80087
0x80038: call 0x809af
0x8003b: call 0x80193
0x8003e: or %ax,%ax
0x80040: je 0x80268
0x80042: mov $0x3f4,%dx
(gdb)
2. рдмреНрд░реЗрдХрдкрд╛рдЗрдВрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ, рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдХрдЯ рдХрд░реЗрдВ:
(gdb) break *0x8003e
Breakpoint 6 at 0x8003e
3. рдЗрд╕ рдмреНрд░реЗрдХрдкрд╛рдЗрдВрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдПрдВ:
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0x0000003e in ?? ()
(gdb)
4. рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╣рдЯрд╛ рджреЗрдВ:
(gdb) delete 6
(gdb)
5. рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
(gdb) print /x $ax
$2 = 0x8000
(gdb)
6. рдПрдХ рдХрджрдо рдФрд░ рдЖрдЧреЗ рд▓реЗ рдЬрд╛рдПрдВ:
(gdb) stepi
0x00000040 in ?? ()
(gdb)
рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд┐рд╕реА рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:
(gdb) x/1w $ss*16+0x12
0x70012: 0x00b8fa00
(gdb)
рд╣рдо рдЕрдХреНрд╕рд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдбреАрдмрдЧ рдХрд░рдирд╛), рдЬреЛ рдХрд╛рдо рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рд░ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИред