回答:
info variables
「すべてのグローバル変数名と静的変数名」をリストするには、入力してください。
info locals
「現在のスタックフレームのローカル変数」(名前と値)をリストするために入力します(関数の静的変数を含む)。
info args
「現在のスタックフレームの引数」(名前と値)をリストするために入力します。
y
はy.1913
コンパイル時に名前が変更されます。
y
関数に静的変数がfoo
あり、別の静的変数があるとy
しbar
ます。それらを区別するには、2つy
のに別の名前を割り当てる必要があります。
select-frame
前に呼び出し関数のローカル変数を使用したい場合info locals
例えば:
(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)
select-frame
と省略できますsel
。代わりにframe
/を使用します。f
これもフレームを印刷します)
さらに、現在info locals
の関数の引数は表示されないため、
(gdb) info args
例えば:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
とargv
は表示されませんinfo locals
。メッセージは「地元住民なし」になります。
参照:info localsコマンド。
info variables
そのコンパイル単位内の静的変数である必要がありますよね?