すべてのグローバル変数/ローカル変数を印刷する方法それはGDBで可能ですか?
「すべてのグローバルおよび静的変数名」をリストするには、 info variables
と入力します。
info locals
と入力すると、「現在のスタックフレームのローカル変数」(名前と値)が一覧表示されます。この関数の静的変数も含まれます。
「現在のスタックフレームの引数」(名前と値)を一覧表示するには、 info args
を入力します。
呼び出し元の関数のローカル変数を見たい場合は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)
さらに、info locals
はあなたがいる関数への引数を表示しないので、
(gdb) info args
例えば:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
とargv
はinfo locals
によって表示されません。メッセージは "No locals"になります。
参照: info localsコマンド 。