1.gdb调试调用

测试程序名为test.c,生成的可执行文件名为test,这两个名字都可以自定义。
插入调试信息有两种方式:

gcc -g test.c -o test
gcc -o test -g test.c

这里加上-g是为了在编译时把调试信息加到可执行文件里。因为调试是对最后的可执行文件进行处理而不是对其它文件(比如说.c文件)

2.启动gdb

gdb test


出现(gdb)开头,说明进入调试界面了。

3.调试操作指令

3.1 查看帮助

(gdb) help

3.2 查看文件

命令l(代表list,列出源码的意思), l 1,23 表示列出从第一行到第22行的源码(l 是小写L不是大写i,要注意)。

(gdb) l

3.3 插入断点

断点设置可以是行号也可以是函数入口。
命令b(代表break,设置断点的意思),除了上图的行数断点和函数断点外(前后鼻音口语区分一下),还有个条件断点。比如上图的示例:b 18 if i == 10 表示当i == 10 的时候才出现断点。

(gdb) b 18
(gdb) b 18 if i == 10

3.4 查看和删除断点

在设置完断点后可以通过info break来查看设置断点情况。(下面几个都可以,结果一样)

(gdb) info break
(gdb) info b
(gdb) i b


获取断点信息后,删除断点。删除指令后的数字为上图中的Num值,不是当初b进去的行号。

(gdb) d 2

3.5 运行代码

GDB默认是从首行开始运行代码,直接输入r;若想在指定行开始运行,在r后面加上行号。

(gdb) r
(gdb) r 18

3.6 单步执行

输入n (next)或者s (step)。
这两个的区别在于:如果有函数调用,s 会进入该函数而n 不会。

(gdb) n
(gdb) s

3.7 查看变量值

键入代码中存在的变量,即可查看,例如p,i两个变量。

(gdb) p i

3.8 恢复程序运行

执行c (continue),会跳到下个断点,如果后续没断点了就会执行完剩余程序。
若该断点在循环中,可以输入clear 断点行号 清除该设置的断点然后再跳往下个断点。

(gdb) c
(gdb) clear

3.9 查看函数堆栈

(gdb) bt

3.10 退出调试

执行finish 是退出函数,执行q 是退出gdb。

(gdb) q

补充

1.查看线程信息

info threads


2.回车键
重复上一条指令。

linux系统中程序调试指令(gdb)相关推荐

  1. 启明云端分享|Linux系统下如何调试I2C设备

    提示:Linux系统中,一些传感器通常挂载在I2C总线上,比如RTC和CSI等.我们在调试这些设备的时候,就需要了解Linux系统中操作I2C总线的方法.本文将详细介绍在Linux系统中如何调试I2C ...

  2. linux系统下的ps指令详解

    文章目录 一.引言 二.初探ps指令 三.第二部分:进程信息解读 四.第三部分:进程过滤与排序 五.第四部分:实例应用与总结 一.引言 在Linux系统中,有许多命令可以帮助我们监控和管理系统中正在运 ...

  3. linux ctg重装,Linux 系统中 CTG 的安装, 应用程序开发以及调试

    Linux 系统中 CTG 的安装, 应用程序开发以及调试 准备 1)CICS Transaction Gateway for Multiplatforms, CICS Transaction Gat ...

  4. Linux下的程序调试——GDB

    无论是多么优秀的程序员,都难以保证自己在编写代码时不会出现任何错误,因此调试是软件开发过程中的一个必不可少的 组成部分.当程序完成编译之后,它很可能无法正常运行,或者会彻底崩溃,或者不能实现预期的功能 ...

  5. 《Linux C编程从入门到精通》》一2.4 Linux中的调试环境gdb

    本节书摘来自异步社区<<Linux C编程从入门到精通>>一书中的第2章,第2.4节,作者 宋磊 , 程钢,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  6. 你的java程序有没有内存泄露,java进程在linux系统中rss计算方式是什么样的?

    java进程在linux系统中rss计算方式如下: RSS = Heap size + MetaSpace + OffHeap size 其中OffHeap由线程堆栈,直接缓冲区,映射文件(库和jar ...

  7. Linux系统和程序中的DEP和ASLR保护机制

    2014年,OpenSSL加密库中的一个缓冲区溢出漏洞被公开.该缺陷被称为"心脏出血".它使受欢迎的在线服务和软件平台的数亿用户暴露于易受攻击的OpenSSL软件版本中.于是操作系 ...

  8. linux中time命令详解、脚本监控记录系统硬盘io值、定位linux系统中await值过高占用的盘、定位占用硬盘IO高的程序、iotop命令说明、lsof使用说明【可定位端口所占用程序等】

    文章目录 文章说明 linux中的time命令 说明&常规用法 bash中使用time,将运行记录追加到文件中,-f后的参数说明 高阶用法 time 命令详细输出指标介绍 ime taken ...

  9. php ping icmp,Linux_详解Linux系统中ping和arping命令的用法,pingping 程序使用 ICMP 协议的强 - phpStudy...

    详解Linux系统中ping和arping命令的用法 pingping 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP 的回显应答.回显请求数据报(" ping ...

最新文章

  1. 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
  2. 这两天被木马程序搞得好烦
  3. CCNA的全套标准实验
  4. Maven配置阿里镜像仓库
  5. 【机器学习基础】时间序列基本概念
  6. PHP获取表单值--同时获取下拉框的Value和Text值
  7. Linux 的虚拟文件系统(强烈推荐)
  8. bagging and boosting
  9. 报告显示H.264份额进一步提升 1080p最受欢迎
  10. activemq网络桥接_ActiveMQ –经纪人网络解释–第4部分
  11. Ubuntu16.04直接修改root密码
  12. python编程(再述rpc)
  13. ansible常用ad hoc操作
  14. php工资条发放源码,如何通过邮箱批量单独发放工资条?(非常详细的图文指导,一看就懂)[腾讯企业邮箱]-腾曦网络...
  15. 异常恶毒的十二星座性格分析(转)
  16. conda冗余package的清理(.conda/pkgs)
  17. k8s简单集群搭建和应用(包括虚拟机的开启)①
  18. 最后期限Lite,兴趣社区圈子论坛小程序前后端
  19. 项目管理(PMP)项目进度管理
  20. Tungsten Replicator学习总结

热门文章

  1. 昇陽電腦(SUN公司)
  2. 数据库连接池连接数量配置多大合理
  3. Consul2-使用consul作为服务注册和发现中心
  4. 数字与能源,交织成新基建的摩比斯环
  5. 宫村优子 -- It's only the fairy tale
  6. 用UDP实现HTTP Streaming协议从指定的URL拉流
  7. 房地产行业IT运维安全就用行云管家堡垒机!
  8. 基于stm32f429的手写识别_【连载】STM32开发指南--第五十一章 手写识别实验
  9. 记录2015年阿里校招实习生面试内容
  10. 玲珑杯 Round #20