1. 程式人生 > >GDB(九) 觀察和改變變數

GDB(九) 觀察和改變變數

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