GDB是UNIX及UNIX-like下的调试工具。GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能。


一、功能

一般来说,GDB主要帮助你完成下面四个方面的功能:
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

二、使用语法
gdb  [ <programfile>  [ <corefile> | <pid> ] ]
<programfile>    可执行的二进制文件
<corefile>    核心转储程序(core  dump,  crash  records,  故障记录)
<pid>    运行程序的进程id

三、编译时要用上-g选项
gcc  -g  <programfile>  

四、基本命令
1.file  [<file>]    装入想要调试的可执行程序<file>
2.run  [<args>]    运行选择的程序并将参数<args>传给它
3.attach  <pid>    将gdb  attach到一个运行时的进程<pid>,并调试它
4.kill    终止正在调试的程序
5.quit    终止gdb
6.help  [<topic>]    帮助

五、单步跟踪和从断点开始继续执行
1.c[ontinue]    从断点开始继续执行
2.s[tep]    执行下一个源程序行,必要时进入下一个函数
3.n[ext]    在不单步执行进入其他函数的情况下,向前执行一行源代码
4.finish    运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参考值等信息。

六、使用断点
1.b[reak]  [<where>]    在代码里设置断点,这将使程序执行到这里时被挂起。<where>可以是16进制地址、函数名、行号、相对的行位移
2.[r]watch  <expr>    为表达式(变量)expr设置一个观察点,一旦表达式值被写或读时,马上停住程序
3.info  break[points]    列出当前所有的断点
4.clear  [<where>]    去除一个指定的断点

七、查看相关的命令
1.list  [<where>]    列出产生执行文件的源代码部分<where>
2.search  <regexp>    在源文件中搜索正规表达式<regexp>
3.backtrace  [<n>]    显示程序中当前位置和表达如何到达当前位置的栈跟踪<n>
4.info  [<what>]    显示与该程序有关的各种信息<what>(可以是局部变量和函数参数)
5.p[rint]  [<expr>]    打印变量或是表达式的值<expr>

八、修改数据和控制路径的命令
1.set  <name>  <expr>    给变量或参数赋值
2.jump  <where>    在源程序中的另一个<where>开始运行

GDB学习笔记的更多相关文章

  1. Gdb学习笔记1

    其实,从很早就开始接触gdb程序,gdb调试程序伴我成长,现在对其用法记录以下: 当程序的运行结果和预期结果不一致,或者程序出现运行错误时,gdb就可以派上大用处了.调试的基本过程是:  -> ...

  2. 《软件调试的艺术》学习笔记——GDB使用技巧摘要

    <软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. ...

  3. MIT 6.828 JOS学习笔记2. Lab 1 Part 1.2: PC bootstrap

    Lab 1 Part 1: PC bootstrap 我们继续~ PC机的物理地址空间 这一节我们将深入的探究到底PC是如何启动的.首先我们看一下通常一个PC的物理地址空间是如何布局的:        ...

  4. GDB调试笔记

    参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][] ...

  5. C语言学习笔记之成员数组和指针

    成员数组和指针是我们c语言中一个非常重要的知识点,记得以前在大学时老师一直要我们做这类的练习了,但是最的还是忘记了,今天来恶补一下.     单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个 ...

  6. 【原创】ZYNQ学习笔记(一) HelloWorld实现

    拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图. 要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分. 之前,自己一直在做 ...

  7. CC/G++ 学习笔记

    CC/G++ 学习笔记 本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细 ...

  8. GCC/G++ 学习笔记

    本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细查看本书,请戳这里. 一 ...

  9. lfs(systemd版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-no ...

随机推荐

  1. [CSP-S模拟测试]:小P的单调数列(树状数组+DP)

    题目描述 小$P$最近喜欢上了单调数列,他觉得单调的数列具有非常多优美的性质.经过小$P$复杂的数学推导,他计算出了一个单调增数列的艺术价值等于该数列中所有书的总和.并且以这个为基础,小$P$还可以求 ...

  2. Python学习笔记(三)- SyntaxError: Non-ASCII character '\xe7' in file

    在编辑Python时,当有中文输出或者注释时,出现错误提示:“SyntaxError: Non-ASCII character '\xe7' in file“ 原因:python的默认编码文件是用的A ...

  3. SQL报错:ORA-00911:无效的字符错误

    转载自:https://blog.csdn.net/huangyanlong/article/details/38096469 *)ORA-00911:无效的字符错误——由编译环境下一个小错误引起.S ...

  4. css基础—字体那些事

    css基础-字体那些事 1. 首先讲字的大小样式等 字体大小 font-size: 40px; 文字字体 font-family: "宋体",Arial; 文字样式 font-st ...

  5. jQuery easing动画效果扩展

    引入Easing js文件 <script src="js/jquery.min.js"></script> <script src="js ...

  6. docker-compose部署kafka

    docker-compose.yml version: '2' services: zookeeper: image: develop-harbor.geostar.com.cn/3rd/zookee ...

  7. leetcode-mid-array-31 three sum-NO

    my code:    time limited def threeSum(nums): """ :type nums: List[int] :rtype: List[L ...

  8. Linux双网卡绑定和解除

    转载双网卡绑定和解除  一定要在服务管理中关闭NetworkManager服务并禁用自动启动,因为NetworkManager服务是实时生效的,一旦设置错,管理员就得回到机房接显示器配置网络连接. 以 ...

  9. sorted排序为什么不是我想要的结果?

    数据源: a=['7465', '7514', '8053', '8267', '8507', '8782', '9091', '9292', '9917', '10000', '10009'] 我以 ...

  10. python-笔记(六)模块操作以及常用模块简介

    模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思是说把python代码写到里面,文件名就是模块的名称,例如:model.py model就是模块名称. 什么是包? ...