zoukankan      html  css  js  c++  java
  • GDB的使用,无他,唯需手熟尔

    简介:

    GDB是GUN发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:
    1.启动调试程序.
    2.让被调试的程序在指定的位置停住(即可以设置断点)。
    3.当成被停住时,可以检查程序的状态(如变量值等等)。

    如何启动GDB?
    启动GDB很简单,如下所示:
    gdb 调试程序名   例如 :gdb a
    或者:gdb
       file 可执行文件名
    例如:gdb
       file a

    既然我们都已经能够启动GDB了,那么我们来一起看一下GDB都有哪些命令。
    注意:GDB中的这些命令是有全名和缩写,在括号内的为缩写

    命令:help 作用:显示gdb的使用帮助信息,后可接命令名,显示命令的使用信息
    命令:list(l)  作用:查看源程序
    命令:bt     作用:显示程序的堆栈
    命令:print vars 作用:打印此时vars变量的值
    命令:break(b) 函数名 作用:在某函数入口处添加断点
    命令:break(b) 行号     作用:在指定行添加断点
    命令:break(b) 文件名 行号 作用:在指定文件中的指定行添加断点
    命令:break(b) 行号 if 条件 作用:当条件为真时,指定行号出断点生效
    例如:b 5 if i = 10,当i = 0 成立时,在第5行的断点生效
    命令:info break 作用:查看所有设置的断点
    命令:delete 断点编号 作用:删除断点
    命令:run(r) 作用:开始运行程序
    命令:next(n) 作用:单步运行程序(不进入子函数)
    命令:step(s) 作用:单步运行程序(进入子函数)
    命令:continue(c) 作用:继续运行程序
    命令:quit 作用:退出gdb调试程序
    以上是一些比较常用的GDB调试时用的命令吧,更详细的关于如何使用GDB的信息大家可以参考GNU的GDB使用手册。

    下面来看一下我们用GDB调试程序的流程:
    注意:下面以源文件a.c为例

    如果我们想用gdb来调试程序,当我们用gcc来编译程序的时候需要加上-g选项,以便使生成的可执行程序中加上gdb所需要的各种信息.
    1.gcc -Wall -g a.c -o a

    编译好程序后,我们来启动gdb来进行调试可执行程序a
    2.gdb a

    我们在main函数处设置断点
    3.break main 或者 b main

    我们让程序执行,在main处停住
    4.run

    下面我们就可以单步执行,然后来获取你想要的信息(变量值等)
    5.next

    当我们所需的信息都获取了以后就可以让程序继续执行到完了
    6.continue

    最后我们从gdb中退出来
    7.quit

    gdb就这些内容吧,希望坛友们可以自己写一个简单的C程序,然后在启动gdb调试一下,尽量把每个命令都使用到,这样时间长了,命令你就会都记住了,切记不要死记硬背。
  • 相关阅读:
    SharePoint的安装配置
    onkeypress与onkeydown及 oncopy和onpaste 事件区别详细说明
    sql Server 的基本函数
    iOS 错误 之 http请求
    iOS 错误及解决汇总
    iOS 开源库 之 AFNetWorking 2.x
    linux 下 tomcat 之 配置静态资源路径
    iOS 之 Block Variable
    iOS 协议
    #import与@class的区别
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742705.html
Copyright © 2011-2022 走看看