Β recurse();}ΠΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅Π°Π½Ρ GDB Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ:
$ <b>gcc -g ch15-abort.c -o ch15-abort</b> /* ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· -O */$ <b>ch15-abort</b> /* ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ */Aborted (core dumped) /* ΠΠ½Π° ΠΏΠ΅ΡΠ°Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ */$ <b>gdb ch15-abort core.4124</b> /* ΠΠ°ΠΏΡΡΡΠΈΡΡ Π΄Π»Ρ Π½Π΅Π΅ GDB */GNU gdb 5.3Copyright 2002 Free Software Foundation, Inc.GDB is free software, covered by the GNUGeneral Public License, and you arewelcome to change it and/or distribute copies of itunder certain conditions.Type "show copying" to see the conditions.There is absolutely no warranty for GDB. Type "show warranty" for details.This GDB was configured as "i686-pc-linux-gnu"...Core was generated by 'ch15-abort'.Program terminated with signal 6, Aborted.Reading symbols from /lib/i686/libc.so.6...done.Loaded symbols for /lib/i686/libc.so.6Reading symbols from /lib/ld-linux.so.2...done.Loaded symbols for /lib/ld-linux.so.2#0 0x42028ccl in kill() from /lib/i686/libc.so.6(gdb) <b>where</b> /* ΠΡΠ²Π΅ΡΡΠΈ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ° */#0 0x42028cc1 in kill() from /lib/i686/libc.so.6#1 0x42028ac8 in raise() from /lib/i686/libc.so.6#2 0x4202a019 in abort() from /lib/1686/libc.so.6#3 0x08048342 in recurse() at ch15-abort.c:13Β /* <-- ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π·Π΄Π΅ΡΡ */#4 0x08048347 in recurse() at ch15-abort.Ρ:15#5 0x08048347 in recurse() at ch15-abort.c:15#6 0x0804835f in main (argc=1, argv=0xbffff8f4) at ch15-abort.c:20#7 0x420158d4 in __libc_start_main() from /lib/i686/libc.so.6ΠΠΎΠΌΠ°Π½Π΄Π°
whererecurse()btwhereΠΡΠ·ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΠ΅ΠΊΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ΅ΠΉΠΌΠΎΠΌ. ΠΡΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ ΠΏΡΠΈΡΠ΅Π» ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ Π°Π΄ΡΠ΅ΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΡΡΠ΅ΠΊΠ΅, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ΅ΠΉΠΌΠΎΠΌ ΡΡΠ΅ΠΊΠ°. ΠΠΎΠΌΠ°Π½Π΄Π°
framerecurse()abort()(gdb) <b>frame 3</b> /* ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡΡΡ Π² ΡΡΠ΅ΠΉΠΌ 3 */#3 0x08048342 in recurse() at ch15-abort.Ρ:1313 abort(); /* GDB Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π² ΡΡΠ΅ΠΉΠΌΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ */(gdb) <b>list</b> /* ΠΠΎΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° */8 Β void recurse(void)9Β {10Β static int i;1112Β if (++i == 3)13Β Β abort();14Β else15Β Β recurse();16 }17(gdb) /* ΠΠ°ΠΆΠ°ΡΠΈΠ΅ ENTER ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ */18 int main(int argc, char **argv)19 {20Β recurse();21 }(gdb) <b>quit</b> /* ΠΡΠΉΡΠΈ ΠΈΠ· ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° (ΠΏΠΎΠΊΠ°) */ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Π½Π°ΠΆΠ°ΡΠΈΠ΅ ENTER ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅
listΠΠ»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ GDB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
readlinevi15.3.2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ, ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΎΡΠΊΠΈ
Π§Π°ΡΡΠΎ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄Π°ΠΌΠΏ ΡΠ΄ΡΠ°. ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GDB Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ core Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ»ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π΅ Π±ΡΠ» ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ (Ρ.Π΅. Π±Π΅Π·
-gΠ‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ Π±Π΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½Π° Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ², ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅, Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° (breakpoint) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠ΅ΡΠ²Π°ΡΡΡΡ, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ. ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎΠΌΠ΅ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠ°ΠΉΠ»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΡΡΠΎΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
runrungawk$ <b>gdb gawk</b> /* ΠΠ°ΠΏΡΡΠΊ GDB Π΄Π»Ρ gawk */