Linux开发工具(下)

1. 调试器 gdb/cgdb的概述

在 VS 中我们已经知道有 Debug 和 Release 两种发布模式,而想要进行程序的调试就必须在 Debug 模式下进行程序调试。而在Linux中,gcc/g++出来的二进制程序,默认是Release模式。要使用gdb调试,必须在源代码生成二进制程序的时候加上**-g**选项。

上面是没有加-g选项时进行调试的情况,是无法进行调试的。

2.gdb的一些基础指令

(1)l/list:显示源代码,从上次的位置开始,每次显示10行。

也可以在l后面加文件名加 :加行号,表示显示指定文件中的源代码。

也可以在l后加函数名,表示显示指定函数的源代码。

(2)quit:退出调试

(3)r/run:从程序开始连续执行。

(4)b/break 文件名: 行号:表示在相应的行号处设置断点(这里的方括号中的内容可加可不加)。

(5)info b/break:表示查看全部断点信息。

(6)d/delete n:删除序列为n的断点(这里的断点序列为上面图片中的断点信息中的最左侧一列的序号)

(7)c/continue:表示从当前位置开始连续执行程序。

(8)n/next:逐过程调试,类似vs中的f10。

(9)s/step:逐语句调试,类似vs中的f11。

(10)p+变量:打印指定变量的值。

(11)finish执行到当前函数返回,然后停止。

(12)disable+n:表示禁用断点编号为n的断点。

(13)enable+n:启用断点编号为n的断点。

(14)until+n:执行到指定行号。

(15)display+变量:跟踪显示指定变量的值。

(16)undisplay+编号:取消对应编号的跟踪显示。

(17)info locals:显示当前函数内的所有临时变量。

3.gdb中常用的技巧

(1)watch

执行时监视一个表达式(如变量)的值。如果监视的表达式在程序运行期间的值发生变化,GDB会暂停程序的运行并通知使用者。

因此当我们进行调试时,非常在意一些变量的变化的时候就可以使用watch进行对这些变量的监视。当我们不再想要监视时,可以像删除断点一样用d+编号,对监视目标进行删除。

(2)set var

当我们大致知道程序中代码问题出现在哪里时,我们需要退出调试进行源代码的修改再进行调试确认代码是否无误,这样比较麻烦,这时候就可以使用set var直接在调试的时候进行代码的修改。

(3)条件断点

添加条件断点:b+行号+if+条件

给已经存在的断点添加条件:condition+编号+条件

相关推荐
无足鸟ICT2 小时前
【RHCA+】type命令(判断命令类型)
linux·ssh·bash
LHICOD2 小时前
Linux-1
linux·ip·vmware·虚拟机·cmd·ping
云飞云共享云桌面3 小时前
机械制造研发部门:一台SolidWorks云主机替代 10 台传统图形工作站
运维·服务器·网络·3d·自动化·制造
j7~3 小时前
【ProtoBuf】(篇一)初识 ProtoBuf
运维·服务器·序列化·protobuf·protobuf的适用特点
丰锋ff3 小时前
用户管理命令
linux·运维·服务器
BcoreOS3 小时前
‌新手必看:Debian 13 虚拟机 SSH 连不上?我是怎么一步步调试成功的
服务器
迪菲赫尔曼3 小时前
【基础篇 08】让VS Code连接服务器:界面在本地,文件保存到远端
运维·服务器·vscode·yolo·论文·教程·ultralyt
东方佑4 小时前
去魅:工具调用、Agent 调用、A2A、MCP、Harness 到底都是什么
服务器·网络·数据库
刚入门的大一新生4 小时前
Linux-线程概念
linux·jvm