GDB(GNU Debuger)是Linux中的一个功能强大的调试器。GDB可以让你查看程序的内部结构,打印变量值,设置断点,单步调试源码,运行时修改变量值,路径跟踪,线程切换,显示汇编代码等。

编译

  要使用GDB进行调试,在编译程序时需要加入-g选项。当设置了这个选项后,GCC会向程序中加入调试信息“楔子”,GDB能用利用这些楔子与程序交互。

    gcc -g myfile.c -o myfile_debug

调试

  1. 加载程序
        可以使用gdb program的方式,或者在GDB启动后用file program的方法启动。
  2. 设置输入参数及显示
        
    set args命令设置发送给程序的参数;show args命令显示其默认的参数。
  3. 打印代码内容
        
    list line1,line2 打印代码,不输入参数则从当前行打印。打印数据用print
  4. 断点
       
    设置断点:1. break 行号;2. break 函数名称;3. break 行号或者函数if条件:这是一个条件断点设置命令,如果条件为真,则程序在到达指定行或函数时停止。如b 38 if i==2
        显示断点信息:info break
        删除指定的某个断点:delete breakpoint 断点编号。 如果不带编号参数,将删除所有断点
        禁止断点:disable breakpoint 断点编号
        允许断点:enable breakpoint 断点编号
        清除断点:clear 源代码行号。 一次性清除直接clear
  5. 运行程序
        
    使用run命令运行准备好的程序,在它后面是传递给程序的参数。如果使用不带参数的run命令,GDB就再次使用前一条run命令的参数。
  6. 检测变量类型
       
     打印数组或变量的类型:whatis 变量名
        查看结构的详细定义用ptype 变量名
  7. 单步调试
      
    单步调试用next或step命令,step可进入函数体内部。如果已经进入函数内部,想退出函数的运行返回到调用函数中,可使用命令finish。
  8. 设置检测点
     
      命令display可以显示某个变量的值,在结束或者遇到断点的时候,将设置变量的值显示出来(作用域内)。
  9. 调用路径(栈信息)
       backtrace 命令可打印函数的调用路径,提供向前跟踪功能。简写bt
  10. 多线程thread
     
      info thread列出当前进程中的线程号,用thread id进入需要调试的线程
  11. 汇编disassemble
     
      disassemble 函数名,打印指定函数的汇编代码

                  常用命令

使用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. 关于SQL储存过程中输出多行数据

    declare @num1 int           --为符合条件的总行数 select @num1=COUNT(1) from cardInfo where openDate between @ ...

  2. ActiveX(四) mshtml 命名空间 重要接口简介

    在上一篇随笔 ActiveX(三)ActiveX 调用 Js 中,我们已经可以获得js中window对象的强类型接口.即 mshtml.IHTMLWindow2 ,通过该接口.我们可以调用js函数.那 ...

  3. C#冒泡排序法

    基本原理 比较两个相邻的数的大小,每次比较完后把最大的数放到本轮的末尾.假设有数组: 258,445,131,97,22,36,17,38,28,28,第一轮:258和445比较,位置不用交换.第二轮 ...

  4. C#获取IP和整数IP方法

    体验: http://tool.hovertree.com/info/ip/代码如下: using System; using System.Text; using System.Text.Regul ...

  5. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  6. MongoDB分片(sharding)

    1.概念 分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程.有时也用分区(partitioning)来表示这个概念.将数据分散到不同的机器上,不需要功能强大的大型计算机就可以储存 ...

  7. if语句,case语句

    1.句式:if...then.判断赋值 例: if RadioButton1.Checked then sex:='男' else if RadioButton2.Checked then sex:= ...

  8. 职业规划:管理vs技术

    "每个人都身怀天赋,但如果用会不会爬树能力来评判一只鱼,那它这辈子都会觉得自己是条蠢鱼" - 阿尔伯特.爱因斯坦 我想我为这篇博客已经准备了很长时间.但是看起了我还一直挣扎我该往哪 ...

  9. Visual Studio 2013 Update 2 RTM 发布

    今天,微软再Visual Studio Blog发布了开放Visual Studio 2013 Update 2 RTM 下载的文章. 原来安装RC版本的同志们可以直接安装,提供在线安装和ISO下载安 ...

  10. JS实现HTML标签转义及反转义

    今天我用ueditor时候遇到一个问题: 我从数据库中读取内容进行编辑的时候,不是有一些html标签嘛,从数据库读出来没有问题: 但是我用asp.net mvc,把读取出来的内容通过ueditor的a ...