Linux下gdb调试-函数调试操作说明

一. 退出正在调试的函数

当单步调试一个函数时,如果不想继续跟踪下去了,可以有两种方式退出。这两种方式所达到的效果不同。下面说明 gdb 调试中,这两种退出函数的不同。

下面以下面代码为例,代码如下:

#include <stdio.h>

int fun(void)
{
   int a = 0;

   a += 1;
   a += 2;
   return a;
}

int main(void)
{
   int data = 0;
   data = fun();
   printf("*****data: %d\n", data);

   return 0;
}

1. finish 命令

finish 命令的退出是,会执行完当前调用函数的结尾,然后返回,然后等待输入接下来的命令。

finish 命令退出操作效果如下所示:

可以看到,当想退出 fun() 函数的调用时,输入 finish 命令后,gdb 调试在执行完fun () 函数后返回。打印值是 3。

2. return 命令

return 命令的退出,函数不会继续执行剩下的语句,并直接返回。也可以用 return expression 命令指定函数的返回值。return 命令退出操作效果如下所示:

可以看到,return 命令退出了函数并且修改了函数的返回值。

二. 通过命令直接运行函数

使用 gdb 调试程序时,可以使用 call 或 print 命令直接调用函数执行。使用如下代码操作说明:

#include <stdio.h>
 
 int gdata = 0;
 int fun(void)
 {
    return (++gdata);
 }

 int main(void)
 {
    printf("***gdata: %d\n", gdata);
    return 0;
 }

 可以看到,执行了两次 fun() 函数后,gdata 的值变成 2。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值