語法 :
使用範例 :
考慮代碼如下 :
編譯並使用gdb 執行該程式 :
所以也就是說 :
step,s | Execute next program line (step into any function calls in the line)
next, n | Execute next program line (step over any function calls in the line)
使用範例 :
考慮代碼如下 :
- stepnext.c :
- #include
- int mypow(int n, int m) {
- int temp;
- if(m==0) return 1;
- temp = mypow(n, m>>1);
- if(m&1) return temp*temp*n;
- return temp*temp;
- }
編譯並使用gdb 執行該程式 :
linux-tl0r:~/gdbDemo # gcc -g stepnext.c -o stepnext <編譯程式>
linux-tl0r:~/gdbDemo # gdb stepnext <進入 gdb>
(gdb) list 13 <檢查 13行附近程式碼>
8 return temp*temp;
9 }
10
11 int main(void) {
12 int a=2, b=11, c;
13 c = mypow(a, b);
14 printf("%d\n", c);
15 return 0;
16 }
(gdb) start <開始程式>
Temporary breakpoint 1, main () at stepnext.c:12
12 int a=2, b=11, c;
(gdb) until 13 <一直執行到 13行停下來>
main () at stepnext.c:13
13 c = mypow(a, b);
(gdb) step <執行下一行(13), 因為是 step 所以會進入 mypow() 函式>
mypow (n=2, m=11) at stepnext.c:5
5 if(m==0) return 1; <在 mypow() 函式裡>
(gdb) s <繼續執行下一行>
6 temp = mypow(n, m>>1);
(gdb) next <執行下一行(6), 因為是 next, 所以不會進入 mypow() 函式, 而是直接跳到第7行.>
7 if(m&1) return temp*temp*n;
...(以下省略)...
所以也就是說 :
This message was edited 4 times. Last update was at 17/11/2010 11:35:55
沒有留言:
張貼留言