【linux浅谈017】gbd调试常用指令
什么是gdb调试
GDB(全称:GNU Debugger)是GNU工程为GNU操作系统开发的调试器。它可以用于调试C、C++、Objective-C、Pascal、Ada等语言编写的程序。
GDB的使用条件
程序要用GDB调试,需要添加调试信息。
gcc *.c -o app -g[-g用于添加调试信息]
1. 启动gdb
gdb + 【需要调试的程序】
start – 只执行一步
n – next
s – step(单步) – 可以进入到函数体内部
c - continue – 直接停在断点的位置
2. 查看代码:
l – list(默认10行)
l 10(函数名)
l filename:行号(函数名)
3. 设置断点:
设置当前文件断点:
b – break
b 10(函数名)
b fileName:行号(函数名)
设置条件断点:
b 10 if value==19
删除断点:
delete – del - d
d 断点的编号
4. 查看设置的断点
获取编号: info – i
info b
num:几号断点
type:什么了类型的断点
enb:当前断点状态
5. 开始 执行gdb调试
执行一步操作: s – step(单步) – 可以进入到函数体内部
继续执行:n – next
执行多步, 直接停在断点处:c - continue – 直接停在断点的位置
6. 单步调试
进入函数体内部: s
从函数体内部跳出: finish(想要停止执行,应该先去除断点)
不进入函数体内部:n
退出当前循环: u
7. 查看变量的值:
p – print
8. 查看变量的类型:
ptype 变量名
9. 设置变量的值:
set var 变量名 = 赋值
10. 设置追踪变量
display
取消追踪变量
undisplay 编号
获取编号: info display
11. 退出gdb调试
quit
12.常用gdb指令
file 装入想要调试的可执行文件
kill 终止正在进行的调试程序
list/l 列出产生执行文件的源代码的一部分
next/n 执行一行源代码但不进入函数内部
step/s 执行一行源代码并可以进入函数内部
run/r 执行当前被调试的程序
c 继续运行程序
quit/q 终止gdb
watch 使你能监视一个变量的值而不管它何时被改变
backtrack 栈跟踪,查看代码被谁调用
print/p 查看变量的值
make 不用退出gdb,就可以重新生成可执行文件
shell 不用退出gdb,就可以使用shell命令
whatis 显示变量或者函数类型
break/b 设置断点
info/i break/b 显示当前断点信息,包含到达断点处的次数
info/i files 显示被调试文件的详细信息
info/i func 显示所有函数名称
info/i local 显示当前的函数的局部变量
info/i prog 显示被调试程序的执行状态
delete/del [n] 删除第n个断点
disable [n] 关闭第n个断点
enable [n] 开启第n个断点
ptype 显示结构定义
set variable 设置变量的值
call name(args) 调用并执行为name,参数为args的函数
Finish 终止当前函数并输出返回值
return value 停止当前函数并返回value给调用者
【linux浅谈017】gbd调试常用指令相关推荐
- python数学库的使用方法_浅谈numpy库的常用基本操作方法
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...
- 浅谈实际开发中常用的分布式事物处理
浅谈实际开发中常用的分布式事物处理 文章目录 前言 一.分布式事物 二.常用方案 1.使用记录表+mq机制 前言 随着微服务的流行,越来越多系统不在是单体结构,根据业务和功能拆分成不同微服务,这就导致 ...
- matlab泊松分布随机数和图像_浅谈可靠性理论中的常用概率分布
浅谈可靠性理论中的常用概率分布 1. 泊松分布 基本原理 泊松分布是最常见的离散概率分布,适合描述单位时间内随机事件发生的概率. (1) 泊松分布概率密度(不可靠度)计算公式 MATLAB概率密度函数 ...
- Linux下gdb(插件pwndbg、pead、gef)安装及调试常用指令
gdb 一.安装指令 如果没安装gdb,先使用以下指令安装gdb sudo apt-get install gdb 先装,因为这个带有 parseheap.以及 heapinfo 等指令,有的场景下更 ...
- Linux的基本安装,与常用指令
Linux目录结构简介: 目录结构 说明 /bin 是Binary的缩写,这个目录存放着最经常使用的命令 /sbin s就是Super User的意思,这里存放的系统管理员使用的系统管理程序 /hom ...
- 【Linux】网络系统配置、文件系统常用指令
Linux操作系统 内容管理 Linux基础操作 查看网络IP和网关 设置静态IP vim /etc/syconfig/network-scripts/ 修改IP后ping问题 更改主机名 远程登录 ...
- 浅谈Angular如何自定义创建指令@Directive
知识普及 Angular 指令根据其创建形式分为内置指令和自定义指令,指令按照类型分: 模板指令--组件就是模板指令(只能自定义) 属性型指令 -- 更改元素.组件或其他指令的外观或行为的指令(有内 ...
- 浅谈四轴PID调试心得
以下内容转自阿莫论坛,写得很详细,是调试大四轴的.小四轴调试也可参照着调. PID调试心得 本人不是自动化出身,也没有受过专业训练,都是自己摸索,在这里浅述一下自己的PID参数整定心得.所言之物皆由实 ...
- 【Linux操作系统】基础概念和常用指令(一)
PS:我下面的操作都是基于Linux云服务器和Xshell远程连接来操作的(这里直接跳过安装) 目录 1.操作系统概述(OS)? 2.为什么企业都选择Linux? 3.Linux版本分类 4.Linu ...
- linux開啟虛擬機命令,Linux系统入门之虚拟机与常用指令学习
在学习linux基础的时候,为了避免一个操作删了系统或者库什么的造成不必要的严重影响,我们在虚拟机中进行操作. 那什么是虚拟机呢?百度这么说的:在实体计算机上,通过软件模拟出的一台或者多台虚拟计算机叫 ...
最新文章
- 使用git 上传自己代码
- node mysql批量写入_如何使用node.js在MySQL中进行批量插入
- iOS自定义NavigationBar
- 软件测试 homework2
- Docker 入门尝鲜
- origin tangent插件_如何用origin绘制切线
- 9-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,C#TCP客户端发信息给单片机控制小灯的亮灭)...
- 飞思卡尔芯片k66单片机溢出_飞思卡尔HCS12系列 Flash的加密解密解决方法
- 运维 之 常用运维工具
- 网络图的绘制方法详细讲解
- Minimum supported Gradle version is 6.1.1. Current version is 5.6.4
- vander范德蒙德行列式
- 全面理解Web3.0时代
- 计算机基础知识背诵口诀,字根表口诀怎么快速背-文言文的快速背诵方法4则,附虚词背诵顺口溜...
- C++ lock_guard 自动释放锁
- 笔记本计算机待机后显示器,笔记本电脑休眠后一直黑屏怎么回事_笔记本休眠后屏幕一直黑屏无法唤醒如何解决-win7之家...
- 极光会客厅:大型H5游戏如何登陆微信小游戏及游戏性能优化分享
- 基于T5CPU的智能屏产品型号与内核对照表
- Review Troller
- 单单训练营 第四期 第一课 做自己的CEO
热门文章
- 【基础知识①】计算机网络知识
- 1148 数字字符出现频率
- App推广:ASO策略篇,清榜频发,优化热情不减
- Recurrent Feature Reasoning for Image Inpainting解读
- 未能找到路径中的某个部分_未能找到路径“..”的一部分
- Android文字转语音引擎(TTS)简单比较及下载
- win10安装配置elasticsearch7.6.0以及java代码初识
- visio画图复制粘贴到word_VISO复制到WORD中全是空白框
- 关于火狐浏览器不能看中国大学mooc上视频的解决办法
- Centos7下cobbler(补鞋匠)安装部署全过程