Linux C语言程序设计(九)——gdb调试

1、单步执行

add_range函数从low加到high,在main函数中首先从1加到10,把结果保存下来,然后从1加到100,再把结果保存下来。

#include <stdio.h>
int add_range(int low, int high)
{
int i, sum;
for (i = low; i <= high; i++)
sum = sum + i;
return sum;
}
int main(void)
{
int result[100];
result[0] = add_range(1, 10);
result[1] = add_range(1, 100);
printf("result[0]=%d\nresult[1]=%d\n",
result[0], result[1]);
return 0;
}

当我们看到结果的时候,会发现第一个结果是55,第二个结果是5105,那么很明显第二个结果是不正确的,因为在高斯定理的故事中,我们就知道这个结果应该是5050.

2、编译选项

编译上加上-g选项,生成的目标文件才能用gdb进行调试:

$ gcc -g main.c -o main
$ gdb main

gdb提供一个类似shell的命令行环境,上面的(gdb)就是提示符,在这个提示符下输入help可以查看命令的类别:

(gdb) help
(gdb) list 1   从第一行列出源码
(gdb) l add_range   列出add_range函数的源码
(gdb) quit    退出gdb环境
(gdb) n(ext)  一条一条的向下执行
(gdb) (直接回车)   重复上面的一条命令


3、断点

先看一个程序,接下来会调试这个程序,如下:

#include <stdio.h>
int main(void)
{
    int sum = 0, i = 0;
    char input[5];
    while (1) {
        scanf("%s", input);
        for (i = 0; input[i] != '\0'; i++){
            sum = sum*10 + input[i] - '0';
        }
        printf("input=%d\n", sum);
    }
    return 0;
}
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">编译一下,看有什么问题:</span>

$ gcc main.c -g -o main
$ ./main
123
input=123
234
input=123234
( Ctrl-C退出程序)
$

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值