• linux c 小程序 gdb调试命令 例子


    1:调试函数的一系列命令,源代码如下main.c
    #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 5015 与正确结果不同,调试如下

    1步骤: gcc -g main.c -o main linux下c源文件编译(含有源代码,可以调试):
    gdb main 进入main函数的调试
    help帮助
    l 1或者 l main 查看源代码
    start开始调试
    n(next)下一步
    s(step)跳进函数
    bt(backtrace)查看函数调用的栈帧
    i(info) locals 查看方法的局部变量
    f(frame) 1 选择1号栈帧
    i locals 查看1号栈帧的局部变量,即main函数的局部变量
    p(print) sum 查看sum变量的值
    finish 跳出当前函数,回到main函数
    set var sum=0 修改变量sum的值为0
    p(print) result[2]=33 print也可以像set一样设置变量的值
    2
    int main()
    {
    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;
    }
    第一次输入123正确,第二次错误

    调试命令如下:
    start 启动调试
    display sum 每次定下来都显示sum的值
    undisplay 取消对这个变量的跟踪
    b(break) 9 在第9行设置一个断点 参数也可以是函数名
    c(continue) 表示连续运行,跳到下一个断点
    i breakpoints 显示已经设置的断点
    delete breakpoints 2 删除断点2
    delete breakpoints 删除所有的断点
    disable breakpoints 3 使某个断点失效
    break 9 if sum != 0 满足条件才可以使用该断点
    r 重新从程序开始连续执行
    x 命令打印存储器中的内容 x/7b input 7b是打印格式,b表示每个字节一组,7表示打印7组
    watch input[5] 跟踪某变量

  • 相关阅读:
    爬虫框架之Scrapy——爬取某招聘信息网站
    爬虫框架之Scrapy
    centos6创建用户,设置ssh登录
    VmWare扩展硬盘分区
    centos安装python与jdk
    vmware安装——CentOS-6.5和Mysql
    python——读取MATLAB数据文件 *.mat
    经纬度坐标互换
    原码, 反码, 补码 详解
    MATLAB——textscan
  • 原文地址:https://www.cnblogs.com/daojian/p/2716788.html
Copyright © 2020-2023  润新知