gdb调试工具和makemakefile工具

Linux基础----编译与调试 文章目录编译与调试1.gcc,g++, gdb的安装1.1 gcc的安装1.2 g++的安装1.3 gdb的安装2.gcc分步进行编译3.一步编译3.1 上述四个步骤,怎么通过一行代码,直接将源文件变成可执行文件呢?3.2 前三个步骤,怎么通过一行代码,直接将源文件变成目标文件“.o”呢?4.编译链接过程5.g++6.makefile和make6.1 make的安装6.2 makefile和make命令的介绍6.3 makefile文件的规则和make的使用7.gdb调试7.1 Debug版本和Releas 阅读详情

gdb调试工具和make/makefile工具

一、gdb调试工具
1.debug/release
  • 程序有两种默认的发布方式debug和release。
  • release是无法进行调试的。
  • Linux中gcc和g++编译链接得到的默认为release模式,所以我们在调试前应加一个**-g**选项进行编译。
gcc test.c -o g_test -g

debug版本的可执行文件也会比release版本大一些,这大的空间里面存放的就是调试信息。

在这里插入图片描述

2.使用
  • 安装
sudo yum install -y gdb
  • gdb基本操作

l 行号:从指定的行号开始往下显示源代码,每次显示10行 (l – list);
l 函数:列出某个函数的源代码 ;
r:运行程序 (r -> run);
b 行号:在某一行打一个断点,相当于VS中的F9 (b –> breakpoint);
info b:查看断点;
d 断点编号:删除断点 (d –> delete);
r:调试运行,如果程序中有断点,则在断点处停下来,如果没有,则直接将程序跑完,相当于VS中的F5 (r –> run);
n:逐过程调试,相当于VS中的F10 (n –> next);
s:逐语句调试,相当于VS中的F11 (s –> step);
c:运行至下一个断点处停下 (c –> continue);
bt:查看调用堆栈 (breaktrace);
p 变量:查看变量值 (p –> print);
display/undisplay 变量:跟踪查看一个变量,每次停下来都显示它的值,undisplay 取消对先前设置的那些变量的跟踪;
finish:把当前函数运行完;
disable breakpoints:禁用断点;
enable breakpoints:启用断点;
quit:退出 gdb;

  • 演示
#include <stdio.h> 
int Add(int x, int y)
{
	int m = x + y;
	return m;
}

int main()
{
	int a = 10, b = 20;
	int c = Add(a, b);
	printf("%d\n", c);
	return 0;
}

  • 进入gdb后,l显示代码。(l每次显示10行,下次接着上次的进行显示)
    在这里插入图片描述

在这里插入图片描述

按住**回车(ENTER)**也可以执行上次执行的命令。


  • 输入r,运行代码,得到结果30。
    在这里插入图片描述

  • b/info b

在这里插入图片描述

  • d 断点编号

删除断点。

在这里插入图片描述


  • r(有断点)

调试运行。

在这里插入图片描述

  • n逐过程调试,s逐语句调试

在这里插入图片描述
在这里插入图片描述

  • c进到下一个断点处

在这里插入图片描述


  • bt查看调用堆栈

在这里插入图片描述


  • p/display/undisplay

p : 查看变量值

display : 追踪显示变量值

undisplay : 取消追踪显示变量值
在这里插入图片描述

  • q 退出
    在这里插入图片描述
二、make/makefile
1.什么是make/makefile

在大型的工程中,源文件不计其数如果我们每个源文件都手搓编译的话,是不是太麻烦且浪费时间了呢?

Linux 提供了项目自动化构建工具 – makefile 来帮助我们解决这个问题;makefile 定义了一系列的规则来指定如何对众多的源文件进行管理;makefile带来的好处就是 – “自动化编译”,即 makefile 一旦写好,以后我们就只需要一个 make 命令,整个工程就可以完全自动编译,极大的提高了软件开发的效率。

2.编写

makefile 只是当前路径下一个普通文件,编写他最重要的是依赖关系和依赖方法。

  • 依赖关系:谁依赖于谁,目录下必须有依赖的那个文件。
  • 依赖方法:如何根据依赖的那个文件得到目标文件

  • 演示
mytest:test.c	  //依赖关系
	gcc test.c -o mytest   //依赖方法

.PHONY:clean  //伪目标
clean:
	rm -f mytest

写好makefile后,我们在当前路径下执行make,系统会自动查找makefile文件进行命令执行。

在这里插入图片描述

在这里插入图片描述

vivado基本使用流程(七、makedebug调试) 一个vivado工程的创建、管脚、时钟约束,仿真,上板,信号抓取,全都包括了。 阅读详情

相关推荐

在一个makefile中输出一个程序的debug版本和release版本

在一个makefile中输出一个程序的debug版本和release版本 场景: 开发人员(rd)和测试人员(qa)是不同的人,可执行程序是通过配置管理平台提供的。同时,所有程序要上线运行,要通过qa的测试,然后将测试通过的程序,在配置管理平台上输出后上线。(从百度的流程中提取出来的,其他公司的流程未知) 需求: debug版本的会有一些额外的处理,以及能够打印更多的log

tianyu的专栏 - Linux site:blog.youkuaiyun.com/wishfly 6399

makefile 调试

makefile 调试

qq_40787630的博客 1709

Win10系统VS2019+Cmake+qhull_8.0.0环境配置

1 qhull 1.1 简要介绍 qhull是一个强大的计算几何库,可以用于计算高维的convex hull, Delaunay triangulation, Voronoi diagram等。 1.2 依赖库 qhull不依赖其他库。 1.3 源码包下载 qhull源码地址:github:https://github.com/qhull/qhull.git 2 Cmake构建项目 2.1 路径 源代码路径:D:/ThirdParty/qhull/qhull_8.0.0构建项目路径:D:/Thi.

wangchenxue的博客 2491

【Linux】自动化构建工具--make/Makefile&&调试器--gdb的使用

Linux下的自动化构建与调试器工具

Hush_H的博客 1796

告别混乱!用Cadence Capture CIS高效管理你的原理图库:以单逻辑器件K9F2G08U0M为例

本文以单逻辑器件K9F2G08U0M为例,详细介绍了如何使用Cadence Capture CIS高效管理原理图库。通过三级分类体系、工程化命名规范和智能检索技术,帮助工程师实现从混乱到有序的转变,提升团队协作效率和设计准确性。

aizhi0169的博客 400

别再死记硬背了!用LTspice和Simulink仿真,5分钟搞懂巴特沃斯、切比雪夫、贝塞尔滤波器的区别

本文通过LTspice和Simulink仿真工具,直观对比了巴特沃斯、切比雪夫和贝塞尔滤波器的特性差异。从通带波纹、过渡带陡峭度到相位线性度,详细解析了三种经典滤波器的设计哲学与应用场景,帮助工程师和学生快速掌握滤波器选型技巧,提升电路设计效率。

weixin_33910191的博客 523

linux调试器gdb 自动化构建工具makeMakefile 一土一如来

文章目录linux环境基础开发工具Linux调试器-gdb使用1.背景2.开始使用Linux项目自动化构建工具-make/Makefile背景理解原理项目清理什么是make,makefile多文件 linux环境基础开发工具 Linux中有两种库,一种是静态库(libxxx.a),一种是动态库(libxxx.so),gcc静态链接时默认是动态链接,一般链接的时候,找的库.so。-static变成静态库,找的库是.a。所以,用户在链接的时候如果出现了链接错误,应该先确认是否存在对应的库。 编译如何找到.

diandengren的博客 1649

springboot源码 红色J_通达信副图指标源码之,出手就赢

今天跟大家分享一个通达信副图指标源码,本指标没有未来函数,因为本指标没有卖点提示,所以本指标需配合主图指标使用效果会更好,简单易懂,很容易明白,所以就不过多介绍使用方法了,以下是指标的贴图。风险提示!股市有风险买卖需谨慎,本指标只做参考建议,不做买卖交易结果,自己要对自己交易结果的盈亏负责,以下是指标的源码。VAR2:=REF(LOW,1);VAR3:=SMA(ABS(LOW-VAR2),3,1)...

weixin_39859909的博客 2847

文章标题

学习日记(1)2015.12.09 今天开始记录学习日记 首先看的内容是李先静的系统程序员成长序言主要内容1.坚持看书2.强调为什么是系统程序员成长计划,针对的是那些程序员3.作为系统程序员的难度,一是软件复杂度会随着软件长时间的改进变得更难,二是需求不断变化对系统的影响,要应对隔离变化。主要就是应对这两个问题。主要特色1.引导学习人思考(思考很重要)2.例子简单3.德才兼备第一部分 背景知识基

Taussig001的博客 217

从零搭建Arduino仿真开发环境:SimulIDE与IDE配置全攻略

本文详细介绍了如何从零搭建Arduino仿真开发环境,涵盖SimulIDE与Arduino IDE的配置全流程。通过仿真模拟环境,开发者可以零成本试错,快速验证电路设计和程序逻辑,特别适合初学者和便携开发需求。文章提供了软件安装、环境配置、项目实战及问题排查的完整指南,帮助读者高效掌握Arduino仿真开发技巧。

weixin_29284657的博客 518

华为OD机试双机位A卷 - VLAN资源池 (C++ & Python & JAVA & JS & GO)

华为OD机试2025双机位A卷 VLAN资源池,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 879

make 调试方法

Makefile 中有没有 Debug 方法呢?

lyndon 2万+

KEPServerEX 6 之 lot Gateway MQTT Clinet 配置使用方式

IoT Gateway即Internet of Things Gateway物联网网关。 ---------------------------------------------------------------------------------- 方式:使用kepw的IOTGateway插件选择MQTTClient 解决:可以实现 KEPW 的Tag值 发送到 MQTT 服务器上 ----------------------------------------...

-雲飛兄-博客 6941

makefile打印变量值进行调试 debug

网上一些代码写好的makefile,需要添加文件进行编译,或转为qt调试。查找、跟踪编译过程。整理集中方法,进行printf.根据调试等级可以使用info/warning/error增加调试信息,语法一致,只是调试等级不一样。以info为例: 1、打印字符串 $(info xxxx-msg) #输出字符串xxxx-msg,不需要加"",info后加空格。 => xxxx-msg 2、打印变量 $(info $(TARGET_DEVICE)) #打印变量TARGET_DEVICE,变

alex1801 3602

【UVM实战】第七章:UVM中的寄存器模型(1)寄存器模型简介

寄存器模型简介~

悟已往之不谏 知来者之可追 2070

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

makefile[一]:编译选项,debug/release版本 + gcc 编译选项

makefile: wildcard eval call说明1. wildcard2. eval3. call 1. wildcard wildcard 它被展开为已经存在的,使用空格分开的,匹配此模式的所有文件列表。 一般我们可以使用“$(wildcard *.c) 来获取目录下所有的.c文件 2. eval eval $(eval xxx) 意思是将xxx 的内容作为makefile 的一...

哈尼的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Makefile文件的测试和调试】

本文是对网上的makefile相关文件进行的测试和汇总。

ashang2002的博客 2111

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Makefile 调试

Makefile 调试 一个调试makefile文件的简便方法:那就是用make -p|tee make.out来输出make运行过程中产生的中间信息。 make -n 就可以输出调试 make 的运行 —————— 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行...

jandroid 367

Linux(三) makefile与gdb调试

makefile与gdb调试

qq_46066548的博客 3873

makefile-gdb

makefile-gdb

weixin_44726699的博客 467

调试-MAKE

make 工具如 GNU make、System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具,但是每个 make 工具之间又有所不同。本文将介绍 makefile 的结构,避免如何在创建 makefile 时出现一些共同的错误,并探索如何修复或解决可移植性问题,还为解决突发的问题提供了一些技巧。大部分 UNIX® 和 Linux® 程序都是通过运行 ma

我们这里还有鱼······ 829

Makefile常用调试方法

Makefile常用调试方法     转载自 陈皓《跟我一起写 Makefile》《GNU Make项目管理》   GNU make 提供了若干可以协助调试的内置函数以及命令行选项。 1、warning函数 $(warning string)函数可以放在makefile 中的任何地方,执行到该函数时,会将string输出,方便定位make执行到哪个位置。warning函数

wdjjwb的专栏 2185

Makefile详解和gdb使用

这里可能有你关于makefile不知道的知识

qq_73752525的博客 1463

makefile 的调试. remake

remake --tasks //列出Makefile 的目标,该目录会有命令执行来生成. --targets 是更详细的目标 remake --trace //跟踪维护的目标, 每一个运行的命令将会显示 remake --profile //列出构建过程中各部分消耗的时间 remake --debugger 进入debugger 调试状态 可以单步,断点,检查变量,调用堆栈,查看目标等.

hjjdebug的专栏 1681

Makefile条件编译debug版和release版

一般,在开发测试阶段用debug版本,而上线发布用release版本。 使用Makefile定制编译不同版本,避免修改程序和Makefile文件,将会十分方便。 读了一些资料,找到一个解决方法,Makefile预定义宏与条件判断,结合make预定义变量,进行条件编译。 比如,有一个test.cpp,包含这段代码 #ifdef debug //your code #endif ...

weixin_30902675的博客 1249
上一篇: gcc/g++工具的使用
下一篇: [C++]继承
沉着冷静2024
博客等级 码龄5年 669粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值