一、准备好内容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\n",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

gdb调试程序的更多相关文章

  1. 用GDB调试程序(一)

    http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或 ...

  2. Linux下使用GDB调试程序

    问题描述:          Linux下使用GDB调试程序 问题解决:          (1)生成调试文件 注:         使用命令   gdb IOStream.c   -o IOStre ...

  3. 用gdb调试程序笔记: 以段错误(Segmental fault)为例

    用gdb调试程序笔记: 以段错误(Segmental fault)为例[转] 1.背景介绍2.程序中常见的bug分类3.程序调试器(如gdb)有什么用4.段错误(Segmental fault)介绍5 ...

  4. 用GDB调试程序

    转自:http://blog.csdn.net/haoel/article/details/2879 是一篇从基础讲gdb的博文 用GDB调试程序 GDB概述---- GDB是GNU开源组织发布的一个 ...

  5. gdb调试程序函数名为问号,什么原因?step by step解决方案

    gdb调试程序函数名为问号,什么原因? http://bbs.chinaunix.net/thread-1823649-1-1.html http://www.bubuko.com/infodetai ...

  6. 用gdb调试程序(Linux环境)

    一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序.    2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式)   ...

  7. [Z] 用GDB调试程序

    原文:http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工 ...

  8. 用 GDB 调试程序

    Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的 ...

  9. 转载 gdb调试程序

    转载自csdn,作者haoel,链接http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一 ...

  10. Linux高级编程--04.GDB调试程序(查看数据)

    查看栈信息 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的.当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入"栈"(Stack)中.你可以用 ...

随机推荐

  1. 【HDOJ】1502 Regular Words

    大数+DP,感觉这个DP有点儿抽象,而且这个是大数,wa了很多次. #include <stdio.h> #define MAXNUM 61 #define MAXLEN 100 type ...

  2. Android开发之应用程序窗体显示状态操作(requestWindowFeature()的应用)

    转自:http://www.cnblogs.com/salam/archive/2010/11/30/1892143.html 我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其 ...

  3. MyBatis学习总结2

    这一篇讲述MyBatis对数据库的CRUD操作,内容不做重复,只做添加:查看学习总结1 一.使用MyBatis对表执行CRUD操作——基于XML的实现 在SQL映射文件userMapper.xml中添 ...

  4. bzoj1670

    第一道凸包 采用Andrew算法,不论实现还是理解都非常简单 ..] of longint;     i,j,k,m,n:longint;     ans:double; procedure swap ...

  5. 《C#并行编程高级教程》第2章 命令式编程 笔记

    Parallel.Invoke 并行执行多个方法,只有在所有方法都执行后才会返回 static void Main(string[] args){    Parallel.Invoke(    () ...

  6. 【转】ubuntu 12.04英文版设置成中文版

    原文网址:http://blog.csdn.net/hhbgk/article/details/7958776 适用于ubuntu 12.04英文版的系统,其它版本的设置应该是大同小异的. 进入ubu ...

  7. BrnShop开源网上商城第六讲:扩展视图功能

    在正式讲解扩展视图功能以前,我们有必要把视图的工作原理简单说明下.任何一个视图都会被翻译成一个c#类,并保存到指定的位置,然后被编译.这也就是为什么能在视图中包含c#代码片段的原因.下面我们通过一个项 ...

  8. Android命名规范(自定义)

    此规范参考自android源码,并加以改进,仅供个人使用,如果你觉得还有可取之处,可以参考下,以后有好的规则,再补充 总体规范: 类名要清晰,能反映出这个类的作用,最好能达到见名知义的效果 方法名要使 ...

  9. 基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页Portal界面拖拽(Ⅵ)

    上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 构建Web界面>,主要介绍系统界面布局.导出数据等. 本篇将介绍首页Portal界面拖拽. 一.首页Portal界面拖拽 ...

  10. 关于offset()的理解

    假如要取得x线的offset().top,在页面上的是x线到页面顶端的距离s1,如何取得x线在窗口上的top呢,这就需要取得窗口顶端到页面顶端的距离s2,由于s1和s2都是有方向的,所以,s1-s2就 ...