// szybki kurs obsugi gdb
// (c) copyright 2002 wojtek kaniewski <wojtekka@irc.pl>

jeli program si wywrci i utworzy plik core, za pomoc gdb mona
sprawdzi, w ktrym miejscu wystpi bd. najpierw uruchamiamy gdb:

  $ gdb ekg ~/.gg/core
  GNU gdb 5.0 (UI_OUT)
  Copyright 2000 Free Software Foundation, Inc.
  (...)
  #0  command_test_segv (name=0x80617c9 "_segv", params=0x8088c20)
      at commands.c:1601
  1601            return (*foo = 'A');
  (gdb)

od razu widzimy, e bd wystpi w funkcji ,,command_test_segv''
z pliku commands.c. potem widzimy bdn lini. w niektrych przypadkach
niestety to nie wystarcza. moliwe, e linia, w ktrej wystpi bd
jest poprawna, ale dostarczone dane nie byy waciwe. wtedy z pomoc
przychodzi polecenie ,,bt'', ktre wywietla stos wywoa funkcji.
widzimy dziki temu po kolei, jaka funkcja wywoywaa jak funkcj
i z jakimi parametrami:

  (gdb) bt
  #0  command_test_segv (name=0x80617c9 "_segv", params=0x8088c20)
      at commands.c:1601
  #1  0x080506e2 in old_execute (target=0x0, line=0x0) at commands.c:2009
  #2  0x08050980 in ekg_execute (target=0x0, line=0x806d700 "_segv")
      at commands.c:2136
  #3  0x08059192 in ui_ncurses_loop () at ui-ncurses.c:231
  #4  0x080578d8 in main (argc=1, argv=0xbffffb24) at ekg.c:726
  #5  0x4008e38f in __libc_start_main () from /lib/libc.so.6
	
teraz widzimy, e po prostu uytkownik wywoa komend ,,_segv''.
co prawda wida to po samej nazwie funkcji, w ktrej wystpi bd,
ale w wikszoci przypadkw nie bdzie to a tak oczywiste.

niestety zdarza si i tak, e bdny kod narusza wane obszary pamici,
a sam bd wystpuje pniej, chociaby przy wywoywaniu funkcji
alokacji pamici. w takich przypadkach zlokalizowanie bdu jest znacznie
trudniejsze.

$Id$
