前言 :
當程式停在中斷點, 你可以看看程式到底是如何執行的. 基本的變數處理命令包括 :
命令 | 說明
範例說明 :
要知道變數的型別, 可以用下列命令 : ((gdb) whatis variable-name)
(gdb) list 14 <檢視原始碼>
warning: Source file is more recent than executable.
9 hello("John");
10 printf("%d\n",itt[0]);
11 printf("%d\n",itt[1]);
12 hello("Peter");
13 printf("\n");
14 for(; testi<=2; testi++){
15 printf("%d ", testi);
16 printf("======\n");
17 }
18 return 0;
(gdb) break 15 <在15行設中斷點>
Breakpoint 1 at 0x80484ee: file string_test.c, line 15.
(gdb) run <執行程式>
Starting program: /usr/home/benjamin/src/test/test
Test
Hello John
0
1
Hello Peter
Breakpoint 1, main () at string_test.c:15
15 printf("%d ", testi);
(gdb) whatis testi <檢視變數testi 的型態>
type = int
你也可以用 whatis 去查詢資料結構, 雖然 ptype 命令的功能更勝一籌. 舉例來說 whatis 雖然可以給你資料結構名稱, ptype 卻能告訴你資料結構的定義. print 會印出任何變數或運算式的值. 請參考如下範例 :
(gdb) print testi <檢視變數 testi的值>
$1 = 0
(gdb) print testi=3 <檢視變數testi 的值同時將之設為 3>
$2 = 3
(gdb) set variable testi = 1 <利用命令 set 將變數 testi 設為 1>
(gdb) print testi <檢視變數 testi的值>
$3 = 1
(gdb) c <繼續執行>
Continuing.
1 ======
Breakpoint 1, main () at string_test.c:15
15 printf("%d ", testi);
若程式已作最佳化, 也許不能列印變數的值或將其改指定新值. 例如已指定到暫存器或已從程式刪除的變數, gdb 就不可能看得到.
當程式停在中斷點, 你可以看看程式到底是如何執行的. 基本的變數處理命令包括 :
命令 | 說明
範例說明 :
要知道變數的型別, 可以用下列命令 : ((gdb) whatis variable-name)
(gdb) list 14 <檢視原始碼>
warning: Source file is more recent than executable.
9 hello("John");
10 printf("%d\n",itt[0]);
11 printf("%d\n",itt[1]);
12 hello("Peter");
13 printf("\n");
14 for(; testi<=2; testi++){
15 printf("%d ", testi);
16 printf("======\n");
17 }
18 return 0;
(gdb) break 15 <在15行設中斷點>
Breakpoint 1 at 0x80484ee: file string_test.c, line 15.
(gdb) run <執行程式>
Starting program: /usr/home/benjamin/src/test/test
Test
Hello John
0
1
Hello Peter
Breakpoint 1, main () at string_test.c:15
15 printf("%d ", testi);
(gdb) whatis testi <檢視變數testi 的型態>
type = int
你也可以用 whatis 去查詢資料結構, 雖然 ptype 命令的功能更勝一籌. 舉例來說 whatis 雖然可以給你資料結構名稱, ptype 卻能告訴你資料結構的定義. print 會印出任何變數或運算式的值. 請參考如下範例 :
(gdb) print testi <檢視變數 testi的值>
$1 = 0
(gdb) print testi=3 <檢視變數testi 的值同時將之設為 3>
$2 = 3
(gdb) set variable testi = 1 <利用命令 set 將變數 testi 設為 1>
(gdb) print testi <檢視變數 testi的值>
$3 = 1
(gdb) c <繼續執行>
Continuing.
1 ======
Breakpoint 1, main () at string_test.c:15
15 printf("%d ", testi);
若程式已作最佳化, 也許不能列印變數的值或將其改指定新值. 例如已指定到暫存器或已從程式刪除的變數, gdb 就不可能看得到.
This message was edited 3 times. Last update was at 21/02/2010 14:42:45
沒有留言:
張貼留言