gdb调试

gdb是GNU 发布的一个强大的程序调试工具,也是Linux 程序员不可或缺的一大利器。
本章我们将给出gdb 常用的命令的操作说明。

启动gdb

使用gdb的前提:
$ gcc -g hello.c -o hello

启动gdb 调试:
$ gdb hello

注意:
如果系统没有安装gdb 的同学,可以体验使用源码安装的方式来安装:

  1. wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.1.tar.gz
  2. tar -zxvf gdb-8.1.1.tar.gz
  3. cd gdb-8.1.1
  4. ./configure
  5. make
  6. make install

然后就可以进入命令行操作,和 Shell 一样,gdb 支持命令补全。输入几个字母,按Tab键,gdb 会补全命令。按两次Tab ,会提示所有可能的命令。
另外,其还支持命令缩写,如, h 代表 help ,
常用命令如下:

获取帮组命令 help
gdb将命令分为12个大类,使用命令: “help 子类别”可以查看没类下面的详细帮助。

如: help breakpoints

设置断点
break 命令用于设置断点,命令接受行号或者函数名作为参数。

break也可设置条件断点:
如: break sayHello if count<1
使用info break 可以查看断点

使用 clear 可以清除断点

运行程序和单步执行
设置完断点后,就可以运行调试程序了,使用run命令(缩写为 r)运行程序至断点。

此时,程序中断,gdb 等待用户发出下一步操作的指令。设用next 命令(缩写为 n)单步执行程序。也可以指定一个数字。下面这条命令让gdb 连续执行两行,然后停下。

如果想继续运行,可以使用continue 命令(缩写为 c )指导 gdb 继续运行程序,直至遇到下一个断点。
如果想继续单步执行,可以继续使用 next,也是以使用 step (缩写为 s), step 和 next 的最大的区别在于,step 遇到函数是会进入到内部,而next 不会进入内部.

监视变量
调试程序最基本的需求就是监视变量的值,可以使用 print 命令(缩写为 p) 显示指定变量的值。

如果要时刻监视某个变量的值,那么每次使用 print 就不方便。比较人性化的是,gdb 提供了watch 命令,用于设置另一种断点:“观察点”。
用法是: watch 变量名或表达式作为参数,一但值发生变化,就停下来。

临时修改变量
当某些特殊情况下,我们想让程序进入一些特殊的流程时,gdb允许用户在程序运行时改变变量的值,通过 set var 命令实现这一点。


查看堆栈情况
每次程序调用一个函数,函数的地址、参数、函数内部变量都会被压入“栈”(Stack) 中,运行时堆栈信息对于程序员非常重要,使用 “bt”命令可以看到当前运行时栈的情况。

退出 gdb
调试完毕,使用quit命令(缩写为q) 退出 gdb程序。

gdb调试[奇牛学院]相关推荐

  1. QT:登入界面账号密码登入和验证(奇牛学院)

    QT: 登入界面账号密码登入和验证 第一次在博客上面写代码 初学 有问题可以用一起讨论!!! ui->img->setScaledContents(true); // 图片是否填充 fal ...

  2. 【Linux系统编程学习】 GDB调试器的简单使用

    此为牛客网Linux C++课程 1.13&1.14&1.15&1.16 的课程笔记. 0. GDB简介 1. 准备工作 想要使用gdb调试,首先需要用gcc的-g参数生成可执 ...

  3. 使用 GDB 调试多进程程序

    使用 GDB 调试多进程程序 来源 https://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html GDB 是 linux 系统上常 ...

  4. GDB调试--以汇编语言为例

    #rpm -qa |grep  gdb 下载: 安装 #tar -zxvf #./configure #make 使用GDB 以汇编语言调试为例 汇编语言实现CPUID指令 CPUID cpuid是I ...

  5. GDB 调试 Mysql 实战(二)GDB 调试打印

    背景 在 https://mengkang.net/1328.html 实验中,我们通过optimizer_trace发现group by会使用intermediate_tmp_table,而且里面的 ...

  6. 用gdb调试mpi程序的一些心得

    Linux下MPI (Message Passage Interface) 的程序不太好调试,在windows下vs2005以上的IDE有集成的简便MPI调试工具,没有用过,有兴趣的可以试验一下.下面 ...

  7. gdb php-fpm,使用 gdb 调试 php-fpm 异常错误

    相关资源下载GDB简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能. 问题 ...

  8. Linux基础 30分钟GDB调试快速突破

    引言 Linus心灵鸡汤 在*nix开发中有道卡叫gdb调试,不管你怎么搞. 它依然在那丝毫不会松动.今天致敬一个 活着的传奇 Linus Torvalds Unix 始于上个世纪60年代,在70年代 ...

  9. SLAM工具|GDB调试从入门到精通

    前言 对于windows平台下,VS下调试简单又方便,那么在linux系统下,该如何进行代码的调试呢? gdb是linux下非常好用的一个调试工具,虽然它是命令行模式的调试工具,但是它的功能非常强大, ...

最新文章

  1. Redis的KEYS命令引起宕机事件
  2. LLDB+Python脚本:增强LLDB调试
  3. NESPER的大体结构 z
  4. 测度论相关概念(吐)
  5. sscom 中文显示 乱码_解决SSM框架使用过程中的中文乱码问题
  6. By.css 的级联读取
  7. 挂起某线程命令 Linux,linux 线程挂起恢复的简单示例
  8. python可以开发exe软件吗_python能开发exe软件吗
  9. android studio 显示图形_显示服务器实现(一)
  10. mask属性是css3的吗_使用CSS3 mask(蒙版,遮罩)属性实现超酷按钮悬停动画
  11. echarts map
  12. hdu3359 Kind of a Blur
  13. 让memcached和mysql更好的工作
  14. java的null类型强转
  15. 初学knockoutjs记录5——Computed observables依赖监控(2 Writable computed observables可写计算监控属性)...
  16. 《嵌入式C编程:PIC单片机和C编程技术与应用》一导读
  17. 软件分享,PicPick中文版 v5.1.4 滚动截图
  18. mysql压缩包部署和常见问题
  19. Bugku CTF 每日一题 旋转跳跃 BUUCTF 九连环
  20. R语言将数值转换为比例

热门文章

  1. 智能尘埃来了!世界上最小计算机M3 仅1立方毫米
  2. Linux CentOS 巡检脚本
  3. OpenGL透视投影
  4. firefox添加搜狗搜索引擎搜索时乱码
  5. 2022高职国家技能大赛(大数据竞赛)-模块E:数据可视化-任务书5
  6. 小波变换的尺度函数和小波函数分析
  7. PhotoShop的字体安装及制作文字特效
  8. 初学者不建议月python吗_为什么我不建议你将python作为入门编程语言
  9. 假定1km长的CSMA/CD网络的数据率为1Gb/s。设信号在网络上的传播速率为200000km/s。求能够使用此协议的最短帧长。
  10. CodeForces 3B-Lorry