GDB(九) 觀察和改變變數
阿新 • • 發佈:2019-01-06
ptype命令可以檢視變數的型別,簡寫為pt。
gdb> ptype n
type = int
也可以檢視結構體的型別:
gdb> pt mt
type = struct mytype {
int a;
char *b;
short int c;
}
print命令檢視變數的值,簡寫成p。
gdb> p mt.a
$2 = 30
它以最‘舒適”的方式列印變數,即根據變數的型別來列印變數的值。
gdb> p mt.b
$3 = 0x80483d0 "UWVS\350i"
也可以列印結構體。
gdb> p mt
$4 = {a = 30, b = 0x80483d0 "UWVS\350i", c = 0}
set print pretty會讓輸出好看些:
gdb> p mt
$5 = {
a = 30,
b = 0x80483d0 "UWVS\350i",
c = 0
}
也可以列印陣列。
gdb> p ar
$2 ={19, 235, 32, 53, 11, 89, 21}
gdb> pt ar
type = int [7]
可以設定列印的格式,比如以十六進位制格式列印上面的陣列:
gdb> p /x ar
$6 = {0x13, 0xeb, 0x20, 0x35, 0xb, 0x59, 0x15}
可以設定的格式有:
o | octal | x | hex | d | decimal | u | unsigned decimal |
t | binary | f | float | a | address | c | char |
也可以列印變數的地址或指標所指的變數值。
gdb> p &mt.a
$7 = (int *) 0xbffff1dc
gdb> p *(&mt.a)
$8 = 2797556
set命令可以改變變數值。
gdb> set mt.a=16
gdb> p mt.a
$9 = 16
或者直接用print命令,設定並列印變數值:
gdb> p mt.a = 81$10 = 81