linux系统中程序调试指令(gdb)
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)相关推荐
- 启明云端分享|Linux系统下如何调试I2C设备
提示:Linux系统中,一些传感器通常挂载在I2C总线上,比如RTC和CSI等.我们在调试这些设备的时候,就需要了解Linux系统中操作I2C总线的方法.本文将详细介绍在Linux系统中如何调试I2C ...
- linux系统下的ps指令详解
文章目录 一.引言 二.初探ps指令 三.第二部分:进程信息解读 四.第三部分:进程过滤与排序 五.第四部分:实例应用与总结 一.引言 在Linux系统中,有许多命令可以帮助我们监控和管理系统中正在运 ...
- linux ctg重装,Linux 系统中 CTG 的安装, 应用程序开发以及调试
Linux 系统中 CTG 的安装, 应用程序开发以及调试 准备 1)CICS Transaction Gateway for Multiplatforms, CICS Transaction Gat ...
- Linux下的程序调试——GDB
无论是多么优秀的程序员,都难以保证自己在编写代码时不会出现任何错误,因此调试是软件开发过程中的一个必不可少的 组成部分.当程序完成编译之后,它很可能无法正常运行,或者会彻底崩溃,或者不能实现预期的功能 ...
- 《Linux C编程从入门到精通》》一2.4 Linux中的调试环境gdb
本节书摘来自异步社区<<Linux C编程从入门到精通>>一书中的第2章,第2.4节,作者 宋磊 , 程钢,更多章节内容可以访问云栖社区"异步社区"公众号查 ...
- 你的java程序有没有内存泄露,java进程在linux系统中rss计算方式是什么样的?
java进程在linux系统中rss计算方式如下: RSS = Heap size + MetaSpace + OffHeap size 其中OffHeap由线程堆栈,直接缓冲区,映射文件(库和jar ...
- Linux系统和程序中的DEP和ASLR保护机制
2014年,OpenSSL加密库中的一个缓冲区溢出漏洞被公开.该缺陷被称为"心脏出血".它使受欢迎的在线服务和软件平台的数亿用户暴露于易受攻击的OpenSSL软件版本中.于是操作系 ...
- linux中time命令详解、脚本监控记录系统硬盘io值、定位linux系统中await值过高占用的盘、定位占用硬盘IO高的程序、iotop命令说明、lsof使用说明【可定位端口所占用程序等】
文章目录 文章说明 linux中的time命令 说明&常规用法 bash中使用time,将运行记录追加到文件中,-f后的参数说明 高阶用法 time 命令详细输出指标介绍 ime taken ...
- php ping icmp,Linux_详解Linux系统中ping和arping命令的用法,pingping 程序使用 ICMP 协议的强 - phpStudy...
详解Linux系统中ping和arping命令的用法 pingping 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP 的回显应答.回显请求数据报(" ping ...
最新文章
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
- 这两天被木马程序搞得好烦
- CCNA的全套标准实验
- Maven配置阿里镜像仓库
- 【机器学习基础】时间序列基本概念
- PHP获取表单值--同时获取下拉框的Value和Text值
- Linux 的虚拟文件系统(强烈推荐)
- bagging and boosting
- 报告显示H.264份额进一步提升 1080p最受欢迎
- activemq网络桥接_ActiveMQ –经纪人网络解释–第4部分
- Ubuntu16.04直接修改root密码
- python编程(再述rpc)
- ansible常用ad hoc操作
- php工资条发放源码,如何通过邮箱批量单独发放工资条?(非常详细的图文指导,一看就懂)[腾讯企业邮箱]-腾曦网络...
- 异常恶毒的十二星座性格分析(转)
- conda冗余package的清理(.conda/pkgs)
- k8s简单集群搭建和应用(包括虚拟机的开启)①
- 最后期限Lite,兴趣社区圈子论坛小程序前后端
- 项目管理(PMP)项目进度管理
- Tungsten Replicator学习总结