gdb学习笔记1(单步执行和跟踪函数调用)
2010-01-03 18:27
gdb作为linux下调试工作,蛮强大的。首先源程序保存为10_1.c(linux c一书宋劲杉编的).源代码如下(因为gdb调试时要用到源代码前面的行号和函数名,所以给我源码。源码均为此书上的内容。)
10_1.c: 1 #include<stdio.h> 2 int add_range(int low,int high) 3 { 4 int i,sum; 5 for (i=low;i<=high;i++) 6 sum=sum+i; 7 return sum; 8 } 9 int main(void) 10 { 11 int result[100]; 12 result[0]=add_range(1,10); 13 result[1]=add_range(1,100); 14 printf("result[0]=%d/nresult[1]=%d/n",result[0],result[1]); 15 return 0; 16 } 在编译时要加上 $: gcc -g 10_1.c -o 10_1.out(扩展名可以不加) 1.
start 命令开始执行程序
2. list 从第一行开始列出源代码 3. quit退出调试 4. step进入函数跟踪。s。 5. backtrace 命令(简写为
bt )可以查看函数调用的栈帧。
(gdb) bt #0 add_range (low=1, high=10) at main.c:6 6.用
info 命令(简写为
i )查看函数局部变量的值。
i locals 7.如果想查看 main 函数当前局部变量的值也可以做到,先用
frame 命令(简写为
f )选择1号栈帧然后再查看局部变量(这个1就是前面的#1)
(gdb) f 1 然后再 i locals 就可以了。 8.用 print 命令(简写为
p )打印出变量的值。
9.用 finish 命令让程序一直运行到从当前函数返回为止。
10. set var sum=0 修改变量的值。 以上为具体内容。以下为表格:
|