GDB是GNU发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:

  1、启动被调试程序。  

  2、让被调试的程序在指定的位置停住。  

  3、当程序被停住时,可以检查程序状态(如变量值)。

  #include <stdio.h>
  void myprint(int res)
  {
    printf("result = %d \n", res);
  }
  void main()
  {
    int i;
    long result = 0;
    for(i=1; i<=100; i++)
    {
      result += i;
    }
    myprint(result);
  }

  GDB使用流程

  1.编译生成可执行文件:

    cc -g tst.c -o test

  2.启动GDB

    gdb test

  3. 在main函数处设置断点

    break main

  4. 运行程序

    run

  5. 利用更加丰富的gdb命令对程序进行调

  DB命令

  • list(l) 查看程序
  • break(b) 函数名 在某函数入口处添加断点
  • break(b) 行号 在指定行添加断点
  •  break(b) 文件名:行号 在指定文件的指定行添 加断点
  • info break 查看所有设置的断点
  • delete 断点编号 删除断点
  • next(n) 单步运行程序(不进入子函数)
  • step(s) 单步运行程序(进入子函数)
  • continue(c) 继续运行程序
  • print(p) 变量名 查看指定变量值
  • set var=value 设置变量的值
  • quit(q) 退出

5、GDB调试工具的使用的更多相关文章

  1. gdb调试工具使用方法分享

    刚才看了一个CSDN上分享gdb调试工具使用的教程,讲得非常好,推荐到这里: http://blog.csdn.net/liigo/article/details/582231

  2. 使用 Strace 和 GDB 调试工具的乐趣

    编写 UNIX® 系统程序充满乐趣,并且具有教育意义.使用 UNIX strace 工具和 GDB(GNU 项目调试工具),您可以真正地深入研究系统的功能,并了解组成这些功能的各种各样的程序.同时使用 ...

  3. Linux环境下的GCC编译器与GDB调试工具介绍

    假如现在我们有如下代码需要编译运行和调试.文件名为:test.c #include <stdio.h> int main() { int day, month, year, sum, le ...

  4. GDB调试工具总结

    程序调试的基本思想是“分析现象->假设错误原因->产生新的现象去验证假设”这样一个循环过程,根据现象如何假设错误原因,以及如何设计新的现象去验证假设,需要非常严密的分析和思考.程序中除了一 ...

  5. Gdb调试工具/ Makfile项目管理

    gdb调试工具 gcc -g main.c -o main 常用命令 命令            简写         作用 help                h            按模块列 ...

  6. 【Linux】GDB调试工具

    GDB调试工具 Linux中包含一个很强大的调试工具GDB(GNU Debuger),可以用它来调试C和C++程序. 一. GDB的主要功能有: 设置断点,当程序运行到断点处暂停 显示变量的值,可以打 ...

  7. GDB调试工具、动态加载、内存管理(day04)

    一.程序中的错误处理 在系统中定义了一个全局变量errno.在这个全局变量中存放着系统调用或者库函数出错的信息(错误编号).然后根据错误编号获取错误信息. 举例说明: 打开一个文件,如果这个文件不存在 ...

  8. linux下的gdb调试工具--断点调试

    到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以 ...

  9. GDB调试工具入门

    从windows转到linux下已经有一段时间了,每次刷算法题碰到问题需要调试的时候,就分分钟想关机,切换到windows上调试.于是,花了一点时间来搜索一下linux下常见的调试工具,这不搜不知道, ...

随机推荐

  1. hydra 常用的命令

    1.本地调试模式运行项目  /gaea hydra /zk节点名 -r "zk://zk地址" -t "节点标识" -d -w 项目相对于$GOPATH/src ...

  2. 工作好搭档(四):铷安居 H-C81 电脑桌

    引言:工欲善其事,必先利其器.码农十年,与电脑打了二十多年的交道,也配置了一些过得去的装备.资金有限,更希望所有的投入都在刀刃上.写工作好搭档系列,是晒考虑的原因.思路.经验和教训.欢迎并希望大伙能一 ...

  3. make menuconfig 出错解决

    问题: hank@hank-virtual-machine:/opt/Emb/linux-2.6.30.4$ sudo make menuconfig *** Unable to find the n ...

  4. OC Nsstring的使用

    // // main.m // NSString // // Created by mj on 13-4-5. // Copyright (c) 2013年 itcast. All rights re ...

  5. ES6-模块导入导出

    基本用法 命名导出(named exports) 可以直接在任何变量或者函数前面加上一个 export 关键字,就可以将它导出. 例如: export const sqrt = Math.sqrt; ...

  6. getResource和getResourceAsStream

    1. 前言 在Java中获取资源的时候,经常用到getResource和getResourceAsStream,本文总结一下这两种获取资源文件的路径差异. 2.Class.getResource(St ...

  7. 关于Jsp页面的jstl标签的级联属性的异常。

    使用SpringMVC框架时,当我做表单回显时. 情景描述.Employee 类有一个Department类的属性.这两个类存在多对一关联关系. 下面是Employee类的属性的定义. public ...

  8. SOJ3266 Birthday

    Time Limit: 1000MS Memory Limit: 65536 K Description Today is Windy's birthday. What can I say? Inpu ...

  9. 四·安装mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz(基于Centos7源码安装)

    1.在Linux中创建用户mysql和主目录,并创建密码 2.解压缩tar.gz并拷贝到/usr/local/mysql目录下面 3.把/usr/local/mysql文件夹拥有者改为mysql 进入 ...

  10. .net 基础(一)

    方法 只需要考虑2个 东西 1. 方法的参数  2.方法的返回值 当参数的个数不确定的时候,可以采用可变参数params. params 数组的 个数,不确定.当传入的 参数为空的时候,可变参数的数组 ...