[TLUG] zmienne w gdb

Jacek Danecki biv@micronet.com.pl
Thu, 21 Feb 2002 18:14:49 +0100 (CET)


Witam!

Mam uruchomiony program i pod=B3=B1czam si=EA do niego przez gdb

$gdb program pid

robi=EA:
=20
(gdb) info variables aa
All variables matching regular expression "aa":

File 1/plik.c:
static int aa;

File 2/plik1.c:
static int aa;

Chcia=B3bym teraz zobaczy=E6 warto=B6=E6 poszczeg=F3lnych zmiennych aa. G=
dybym
uruchamia=B3 program z gdb zrobi=B3bym to tak:
print '1/plik.c'::aa
i=20
print '2/plik1.c'::aa

i wszystko by=B3oby dobrze. Jednak gdy pod=B3=B1czam si=EA do procesu syt=
uacja
wygl=B1da troch=EA inaczej.

Na podstawie objdump --syms wiem, =BFe:
00000000 l    df *ABS*  00000000 plik.c
08049694 l     O .bss   00000004 aa
00000000 l    df *ABS*  00000000 plik1.c
080495d0 l     O .data  00000004 aa

Wi=EAc mog=EA zobaczy=E6 zmienne przez adres:=20
(gdb) print *0x08049694
$8 =3D 8
(gdb) print *0x080495d0
$9 =3D 9

Zamiast adres=F3w chcia=B3bym jednak poda=E6 jak ni=BFej:

(gdb) print '1/plik.c'::aa
Cannot access memory at address 0x9.

(gdb) print '2/plik1.c'::aa
Cannot access memory at address 0x9.

W tej chwili zmienna aa jest widziana:

(gdb) print aa
$12 =3D 8

(gdb) print &aa
$13 =3D (int *) 0x8049694

--
Jacek Danecki
mail: biv@micronet.com.pl
www:  http://www.micronet.com.pl/~biv
Registered Linux user number 137044