Makefile (2) gdb

gdb调试


1.用debug的方式编译

 -g

2.打上断点

3.单步调试

  step into   进入函数里面
  step over   运行整个函数
  step return 跳出当前函数

4.继续运行

5.打印和监控值


下面是栗子:

 1  #include <stdlib.h>
 2  #include <stdio.h>
 3   ?
 4   static int add(int i)   //创建一个函数,循环10次,将传进来的数每次+1
 5   {
 6
 7       for(int k=0;k<10;k++)
 8       {
 9           i += 1;
10       }
11       return i;
12   }
13   ?
14   int main(int argc, char const *argv[])
15   {
16       int ret;
17       ret = add(10);  //调用函数
18       printf("%d\n",ret);
19       return 0;
20   }

(1) 编译的时候,带调试编译

gcc test.c -g -o a.out

(2) 用gdb运行

 gdb a.out

(3) 打断点

  >>1.查看源码

l(ist)
  >>2.打断点
      b(reak) 函数名
      b(reak) 行号
      b(reak) 文件名:行号
      b(reak) 行号 if条件
  >>3.查看断点
info break(i b)
  >>4.删除断点
    d(elete)
-----------------------------------------------
 //1.先用 l 看源码

 //2.打断点
 //b 7 在第7行打断点
 //b add 在函数add打断点
  //3.查看断点 i b

  //4.删除断点 d <断点号>

(4) 调试

  1.r(un)         调试
  2.c(ontinue)    继续
  3.q(uit)        退出
  1.n(ext) --step next
  2.s(tep) --step into
  3.f(inish) --退出当前函数
  4.c(ontinue) --把剩下的执行完

(5) 打印值和监控值

  1. w(atch) x 监控x变量
  2. p(rint) x 把x值打印出来

(6) 神奇的wi --输入wi

原文地址:https://www.cnblogs.com/kmist/p/10177167.html

时间: 2024-10-26 22:22:56

Makefile (2) gdb的相关文章

Makefile 加入gdb以及不同目录编译

条件:根目录下两个文件夹fun,head ./fun/function.h ./fun/function.c ./head/define.h ./main.c 以下为对应的文件源码,相对比较简单,仅仅起一个抛砖引玉的作用,到时候只需要照搬就行. function.h #include <stdio.h> #include <stdlib.h> #include "../head/define.h" void show_hello(); function.c #i

makefile、gdb使用记录

makefile的模板 all: rover server station rover: rover.c tcputil.o gcc rover.c tcputil.o -o rover -lpthread server: server.c tcputil.o gcc server.c tcputil.o -o server -lpthread station:station.c tcputil.o gcc station.c tcputil.o -o station -lpthread tcp

Makefile和gdb的简单使用

1.为什么要用Makefile进行多个.C文件的编译: (1).一般我们在进行项目开发的时候,会建立工程,下面有许多目录,不同目录下又有许多.C文件,这事就需要联合编译了. (2).我们自己手动编译的话,多个程序文件交织在一起,会出现不同文件资源之间的依赖与被依赖关系.那么在编译的时候就会出现问题:必须先解决被依赖项,在解决依赖项. 在这种情况下,我们进行手动编译的话,将会变得异常困难,首先我们必须记住依赖关系,才能知道编译顺序,其次每一次都要执行非常多的gcc编译命令才能完成最终的编译目标(g

Makefile &amp;&amp; GDB

昨天学习了C++内存空间一章,看了TCP/IP第一卷第一章,最后看了<Linux网络编程>里的Makefile和gdb部分.现在靠回忆补上一篇博客. 一:C++有三种内存存储模式(C++11有4种,多了“线程存储”) 1.自动变量 a.auto声明变量的方式已被取消,register方式仍然保持 b.自动变量的生存周期就是定义的位置到括号结束的位置 2.静态变量 a.有三种静态变量:链接性为外部,链接性为内部,没有链接性. b.三种对应定义方式为:定义在函数外面:定义在函数外面并加上stati

使用VS GDB扩充套件在VS上远端侦错Linux上的C/C++程序

在 Linux 上开发 C/C++ 程序,或许你会直接(本机或远端)登入 Linux,打开编辑器写完代码后,就用 gcc/g++ 来编译,遇到要除错(debug)的时候,则会选择使用 gdb 来进行除错.现在,如果你刚好也很喜欢 Visual Studio,你可以不必改变习惯,用 Visual Studio写程式.然后远端送到 Linux 上编译.甚至还能接上 gdb 来除错.这个对于开发像是嵌入式系统.或是 IoT 装置的程序等等就可以多多利用 Visual Studio 强大的 IDE 能力

2.6 visual studio开发linux程序

2.6.1 前言   在linux环境下开发C++程序,除了需要掌握C++的知识外,还需要掌握如何写makefile和使用GDB进行调试,这对于不熟悉makefile和GDB的开发人员是比较麻烦的,目前vs2015及以上的版本能够支持linux c++程序的开发和调试,与传统vs上的windows编程不同的是,vs所需要的Linux环境需要搭载在一个linux的服务器上,vs相当于将windows系统和这个linux系统之间建立了某种映射,可以将代码复制到linux中对应的目录中,并且windo

十年研发经验工程师的嵌入式学习书籍大推荐

转自:http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=26458&page=1&authorid=62883 从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步. 为什么选择学习嵌入式? 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一.当前的中国IT人才面临严重的“后继乏人”, 而且这种缺口由于培

关于嵌入式系统的学习路线图

嵌入式系统方向 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一.嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器.存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等.特别是随着消费家电的智能化,嵌入式更显重要.像我们平常常见到的手机.PDA.电子字典.可视电话.VCD/DVD/MP3 Player.数字相机(DC).数字摄像机(DV).U-Disk.机顶盒(Set Top Box).高清电视(HDTV).游戏机.智能玩具.交换机.路由器.数控设备或仪表.汽

这些年看过的Linux服务端开发的书籍推荐

这些年看过的Linux相关书籍推荐 计算机类图书相对感觉还是比较贵的,但是我是一个比较喜欢买纸质版书籍的人,所以我通常都会在京东618等活动买书,相对会便宜很多.大四开始看计算机相关的书籍,有的时候师弟们让推荐书籍,我就总结在这里了.不管你是大一还是研一,想必都有你需要的书籍吧. 相应的电子版我会总结到文末,哎我就是最亮的仔!! 1 编程语言书籍 想必大部分小伙伴刚进入大学校园,开设的第一门专业课是某某语言程序设计,下面推荐如下书籍 c语言 这三本书可说是c语言中精华了,不过比较遗憾的是很多大学