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调试一下,尽量把每个命令都使用到,这样时间长了,命令你就会都记住了,切记不要死记硬背。
  • 相关阅读:
    JavaScript
    94.Binary Tree Inorder Traversal
    144.Binary Tree Preorder Traversal
    106.Construct Binary Tree from Inorder and Postorder Traversal
    105.Construct Binary Tree from Preorder and Inorder Traversal
    90.Subsets II
    78.Subsets
    83.Merge Sorted Array
    80.Remove Duplicates from Sorted Array II
    79.Word Search
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742705.html
Copyright © 2011-2022 走看看