¿Imprimir todas las variables globales/variables locales?

Resuelto cpuer asked hace 13 años • 3 respuestas

¿Cómo puedo imprimir todas las variables globales/variables locales? ¿Es eso posible en gdb?

cpuer avatar Jun 07 '11 13:06 cpuer
Aceptado

Escriba info variablespara enumerar "Todos los nombres de variables estáticas y globales" (lista enorme.

Escriba info localspara enumerar las "variables locales del marco de pila actual" (nombres y valores), incluidas las variables estáticas en esa función.

Escriba info argspara enumerar "Argumentos del marco de pila actual" (nombres y valores).

kennytm avatar Jun 07 '2011 06:06 kennytm

En caso de que desee ver las variables locales de una función de llamada, utilice select-frameantesinfo locals

P.ej:

(gdb) bt
#0  0xfec3c0b5 in _lwp_kill () from /lib/libc.so.1
#1  0xfec36f39 in thr_kill () from /lib/libc.so.1
#2  0xfebe3603 in raise () from /lib/libc.so.1
#3  0xfebc2961 in abort () from /lib/libc.so.1
#4  0xfebc2bef in _assert_c99 () from /lib/libc.so.1
#5  0x08053260 in main (argc=1, argv=0x8047958) at ber.c:480
(gdb) info locals
No symbol table info available.
(gdb) select-frame 5
(gdb) info locals
i = 28
(gdb) 
Samuel Åslund avatar Mar 06 '2014 13:03 Samuel Åslund

Además, como info localsno muestra los argumentos de la función en la que estás, usa

(gdb) info args

Por ejemplo:

int main(int argc, char *argv[]) {
    argc = 6*7;    //Break here.
    return 0;
}

argcy argvno será mostrado por info locals. El mensaje será "No locales".

Referencia: comando info locales .

Evgeni Sergeev avatar Jan 18 '2014 05:01 Evgeni Sergeev