Câu trả lời:
Nhập info variables
vào danh sách "Tất cả các tên biến toàn cục và tĩnh".
Nhập info locals
để liệt kê "Biến cục bộ của khung ngăn xếp hiện tại" (tên và giá trị), bao gồm các biến tĩnh trong hàm đó.
Nhập info args
để liệt kê "Đối số của khung ngăn xếp hiện tại" (tên và giá trị).
y
được đổi tên thành y.1913
biên dịch.
y
trong chức năng foo
và khác y
trong bar
. Để phân biệt chúng, một tên khác phải được gán cho hai y
.
Trong trường hợp bạn muốn xem các biến cục bộ của hàm gọi, hãy sử dụng select-frame
trướcinfo locals
Ví dụ:
(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
có thể được viết tắt là sel
. Sử dụng khác frame
/ f
, cũng in khung)
Ngoài ra, vì info locals
không hiển thị các đối số cho hàm bạn đang sử dụng, hãy sử dụng
(gdb) info args
Ví dụ:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
và argv
sẽ không được hiển thị bởi info locals
. Thông điệp sẽ là "Không có người dân địa phương."
Tham khảo: thông tin lệnh địa phương .
info variables
phải là biến tĩnh trong đơn vị biên dịch đó, phải không?