zoukankan      html  css  js  c++  java
  • gdb调试程序

    一、准备好内容vim test3.c  输入如下即可

    #include <stdio.h>
     int func(int n)
     {
             int sum=0,i;
             for(i=0; i<n; i++)
             {
                     sum+=i;
             }
             return sum;
     }
     main()
     {
             int i;
             long result = 0;
             for(i=1; i<=100; i++)
             {
                     result += i;
             }
            printf("result[1-100] = %d /n", result );
            printf("result[1-250] = %d /n", func(250) );
     }

    准备好的内容2 test4.c

    #include<stdio.h>

    int get_sum(int n)
    {
      int sum = 0,i;
    for(i=0;i<n;i++)
    sum += i;
    return sum;
    }

    int main()
    {
     int i=100,result;
     result =get_sum(i);
     printf("1+2+3+...+%d=%d ",i,result);
     return 0;

    }

    二、编译成

    gcc test3.c -o test3

    ./test3 可以查看结果

    gdb test3 出现错误

    gdb list 的时候出现如下错误

    No symbol table is loaded.  Use the "file" command.

    ---------------------------------

    解决方案:

    list命令后显示No symbol table is loaded. Use the "file" command.
    原来编译用:gcc -o filename filename.c
    解决办法,编译时加 一定要加-g:gcc -o filename -g filename.c

    或者 比如gcc -g -o test3 test3.c 然后 gdb test3

    又例子二:gcc -g test4.c -o test4

    gdb list 1 从第一行开始。默认的一次只有10行,直接enter键下10行代码。list 1,17 列出1到17行的代码

    gdb enter键  接下来的源码

    gdb break 15 15行打断点

    gdb r  开始运行

    来到断点处

    gdb n  下一步,下一步

    gdb p i 打印某个变量

    gdb watch i 查看某个变量

    调试程序的时候,

    break 6

    run(不然 watch i==99 找不到i)

    watch i==99 直接查看循环到99的情况

    记得clear 6 与continue才能查看变量的值

    print i

    print sum

    -----------

    查看断点信息

     info breakpoints

     delete 编号。如删除第2个断点 delete 2

    clear 6 删除第6行的断点

    -----------

    调试程序的时候,next和step的区别是。next 把整个函数当做一条语句处理,然后是下一行。

    step是进入函数内部,然后执行函数内部一条一条语句。返回之后,继续执行下一条语句。

    ----------------------------------------------------------------------

    一个经典的调试程序:

    break 6

    run

    watch i==99

    continue[运行到下一个断点或运行完] 运行到i==99的情况

    然后按step进行调试程序即可。或next也可以。

    参考网站:

    http://blog.csdn.net/haoel/article/details/2879

  • 相关阅读:
    SWTDesigner注册器
    C# 创建、部署和调用WebService的简单示例
    (android实战)应用在线版本更新
    jQuery获取Select选择的Text和 Value(转)
    Android 判断sd卡和sim卡是否可用
    Android开发中如何固定屏幕显示!
    入侵网站简单方法总结
    【Android】防止UI界面被输入法遮挡(画面随输入法自适应)
    关于字符编码的问题
    最好用的mysql密码忘记的解决方法
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/3988032.html
Copyright © 2011-2022 走看看