gdb调试工具和makemakefile工具
创始人
2025-05-31 16:53:17
0

gdb调试工具和make/makefile工具

文章目录

      • gdb调试工具和make/makefile工具
        • 一、gdb调试工具
          • 1.debug/release
          • 2.使用
        • 二、make/makefile
            • 1.什么是make/makefile
            • 2.编写

一、gdb调试工具

1.debug/release
  • 程序有两种默认的发布方式debugrelease
  • 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  
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文件进行命令执行。

在这里插入图片描述

在这里插入图片描述

相关内容

热门资讯

菲媒:菲律宾副总统称,不优先考... 【环球网报道】综合菲律宾《马尼拉标准报》等媒体6月1日报道,菲律宾副总统莎拉·杜特尔特称,她不优先考...
原创 美... 特朗普再次执掌白宫后,他的“地盘扩张梦”可谓是雷声大雨点小,搞得沸沸扬扬却未见实效。他本想一口气吞掉...
法网-郑钦文鏖战2-1萨姆索诺... 北京时间6月1日,2025赛季网球大满贯法国公开赛继续进行,在女单第三轮的一场比赛中,赛会8号种子、...
以国防军:黎以停火以来超180... △黎巴嫩南部地区(资料图) 以色列国防军当地时间6月1日下午发布消息称,当天上午,一名黎巴嫩真主党特...
深夜,巨子生物突发声明:接受检... 每经编辑|金冥羽 巨子生物旗下重组胶原蛋白品牌可复美产品成分争议持续发酵。 6月1日22点32分,...
新修订的《快递暂行条例》6月1... 6月1日起,《国务院关于修改〈快递暂行条例〉的决定》正式施行。此次修改,专门增加了“快递包装”章节,...
开放“以债换房”政策,可直接置... “南京网络辟谣”微信公众号6月1日发文称,近日,有“南京二手房零首付李经理”“合肥瑶珺房地产代理有限...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
基于TDesign风格的Bla... 作为一名Web开发人员,开发前端少不了使用JavaScript,而Bla...