Imprimir todas las variables globales / variables locales?


Respuestas:


490

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

Escriba info localspara enumerar "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).


2
@ KennyTM, los nombres de las variables estáticas en la salida de info variablesdeberían ser variables estáticas dentro de esa unidad de compilación, ¿verdad?
cpuer

3
@cpuer: No necesariamente. Solo muestra el nombre en la tabla de símbolos. Por ejemplo, con gcc en Mac, yse cambia y.1913el nombre de una variable estática en la compilación.
kennytm

1
@KennyTM, ¿no se almacenan las variables estáticas dentro de la función de la misma manera que las variables estáticas fuera de la función (en la tabla de símbolos)?
cpuer

2
@cpuer: se almacenan de la misma manera, pero los nombres de los símbolos serán diferentes. Considere que tiene una variable estática yen función fooy otra yen bar. Para distinguirlos, se debe asignar un nombre diferente a los dos y.
kennytm

1
@KennyTM, además, ¿es posible llegar a donde se declara y define una variable respectivamente?
cpuer

110

En caso de que desee ver las variables locales de una función de llamada, use 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) 

44
( select-framepuede abreviarse como sel. Alternativamente use frame/ f, que también imprime el marco)
user202729

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.