gdb学习笔记1(单步执行和跟踪函数调用)

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 }

在编译时要加上-g选项,生成的可执行文件才能用gdb进行源码级调试:

$: gcc -g 10_1.c -o 10_1.out(扩展名可以不加)
然后执行:gdb 10_1.out
就可以进行gdb调试了。
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
#1 0x080483c1 in main () at main.c:14
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 修改变量的值。

以上为具体内容。以下为表格:
命令描述
backtrace(或bt)查看各级函数调用及参数
finish连续运行到当前函数返回为止,然后停下来等待命令
frame(或f) 帧编号选择栈帧
info(或i) locals查看当前栈帧局部变量的值
list(或l)列出源代码,接着上次的位置往下列,每次列10行
list 行号列出从第几行开始的源代码
list 函数名列出某个函数的源代码
next(或n)执行下一行语句
print(或p)打印表达式的值,通过表达式可以修改变量的值或者调用函数
quit(或q)退出gdb调试环境
set var修改变量的值
start开始执行程序,停在main函数第一行语句前面等待命令
step(或s)执行下一行语句,如果有函数调用则进入到函数中

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值