przeglądanie stosu

0

Cześć :)
Jak w gdb można podglądnąć jak wygląda stos "w pobliżu" rozkazu, który jest obecnie wykonywany?
Chyba, że jakoś inaczej- ja chciałbym po prostu prześledzić jak odbywa się realizacja wyjątków od kuchni w C++.
pozdro :)

0

Nie lepiej po prostu disassembler? Wtedy bez problemu sprawdzisz sobie wszystko co cię interesuje.

1

Poczytaj najnowszego "Programistę" - tam to jest fajnie opisane, a patrząc na zawartości stosu czy rejestrów to sam wiele nie zrozumiesz.

0

ok, to poleć jakiś disassembler na linux, ewentualnie na windows.

3

Co rozumiesz przez przegladanie stosu? Wyswietlanie zmiennych lokalnych? Wyswietlanie obecnej/poprzednich ramek stosu?

Anyway...

#include <stdio.h>

int main() {
  int a = 10, b = 20;
  printf("%d %d", a, b);
  return 0;
}

Majac taki program jak powyzej.

  1. Kompilujesz program gcc foo.c -o foo --debug
  2. Odpalasz gdb gdb foo
  3. Ustawiasz breakpointa zalozmy na linii z printf break foo.c: 5
  4. Uruchamiasz program run, zeby zatrzymal sie na ustawionym breakpointcie.
  5. frame bez argumentow ci wyswietli aktualna ramke stosu | info locals wyswietli ci zmienne lokalne wraz z wartosciami.

Przyklad dzialania i outputu (nazwa pliku bedzie ciut inna):

(gdb) break hello_world.c: 5
Breakpoint 1 at 0x804841a: file hello_world.c, line 5.
(gdb) run
Starting program: /home/vixlur/Desktop/Others/hello_world

Breakpoint 1, main () at hello_world.c:5
5	  printf("%d %d", a, b);
(gdb) frame
#0  main () at hello_world.c:5
5	  printf("%d %d", a, b);
(gdb) info locals
a = 10
b = 20
(gdb) 

Do poczytania: http://www.chemie.fu-berlin.de/chemnet/use/info/gdb/gdb_7.html

Jeszcze odpowiadajac na ostatnie pytanie:

ok, to poleć jakiś disassembler na linux, ewentualnie na windows.

Jesli moze byc windows, to darmowa wersja IDA wydaje sie byc najlepszym rozwiazaniem. Na linuxa afair darmowa jest niedostepna.

0

Polecam użyć graficznej nakładki na GDB jaką masz w Eclipse CDT ;)

1

Mogę jedynie polecić debuggery na Windows, gdyż na Linuxie nie siedzę.

  1. Darmowy debugger OllyDbg v2 - http://www.ollydbg.de/version2.html - znakomita analiza kodu i prezentacja danych

Koniec ;). Chyba, że stać Cię na deasembler z wbudowanym debuggerem jak np. IDA (jest demówka, ale nie pamiętam czy posiada wbudowany debugger).

Cała reszta to syf nie warty instalowania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1