gdb调试


1.用debug的方式编译

 -g

2.打上断点

3.单步调试

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

4.继续运行

5.打印和监控值


下面是栗子:

  #include <stdlib.h>
#include <stdio.h>

static int add(int i) //创建一个函数,循环10次,将传进来的数每次+1
{ for(int k=;k<;k++)
{
i += ;
}
return i;
}

int main(int argc, char const *argv[])
{
int ret;
ret = add(); //调用函数
printf("%d\n",ret);
return ;
}

(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) 调试

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

(5) 打印值和监控值

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

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

Makefile (2) gdb的更多相关文章

  1. makefile、gdb使用记录

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

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

    在 Linux 上开发 C/C++ 程序,或许你会直接(本机或远端)登入 Linux,打开编辑器写完代码后,就用 gcc/g++ 来编译,遇到要除错(debug)的时候,则会选择使用 gdb 来进行除 ...

  3. 好文章!转载嵌入式LINUX

    整理了嵌入式linux学习路线供参考,希望对您有所参考价值! 一.linux入门 目前嵌入式主要开发环境有 Linux.Wince等:Linux因其开源.开发操作便利而被广泛采用.而Linux操作系统 ...

  4. DevOps技能自查表

    前篇提到了DevOps的工作岗位要求,但是没有来的及深入细节,本文根据个人10年多的经验,尽量详细地列举DevOps所需要用到的一些技术和相关参考网站. Linux基础 Linux系统的基本概念: 必 ...

  5. GCC,GDB,Makefile和IO复用函数

    2015.1.22 c高级的环境搭建:GCC编译器:全称 GNU CC,是GNU工具(tool chain)的一种,源码编译成机器码,gcc的编译依赖于很多小工具4.3.3和3.4.3版本的比较稳定 ...

  6. gcc编译, gdb调试, makefile写法

    //test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...

  7. GCC、GDB、Makefile

    1.GCC程序编译 Linux系统下的gcc(GNUCCompiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作之一.gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一 ...

  8. 03-Linux命令基础-第03天(makefile、静态库、动态库、gdb调试工具)

    01- 复习 tar tvf xxx 查看压缩包内容 区分前后台: 是否能和用户交互 Vmware选桥接模式 会给系统虚拟一个和外部相同网段的ip 02- vim扩展操作 因为不是做嵌入式开发的 所以 ...

  9. [00]APUE:GCC / GDB / Makefile

    http://blog.csdn.net/haoel/article/category/9197 http://blog.csdn.net/haoel/article/details/2886  生成 ...

随机推荐

  1. maven课程 项目管理利器-maven 3-5 maven生命周期和插件 4星

    本节重点: maven插件的使用 本节主要内容: 1 maven生命周期 2 maven插件的使用 3 零散知识点 1 maven生命周期  maven生命周期主要有三个: a clean 清理项目 ...

  2. extjs 6

    因为最近公司要写一个项目前台所以开始学习extjs前端框架,希望一起共勉. 那么我们的教程就从 Hello World 讲起. helloWorld.js   Ext.onReady(function ...

  3. 浅谈 ECMAScript 和 JavaScript

    ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成. 什么是ECMAScript?http://baike.baidu.com/link?url=G1T8n ...

  4. (C#) Handling and Raising Events

    Handling and Raising Events .NET Framework 4.5   Other Versions     6 out of 20 rated this helpful - ...

  5. bootstrap中文文档阅读记录

    2017年1月12日20:26:26http://v3.bootcss.com/components/#navbar

  6. selenium server在页面加载超时浏览器与driver通信失败时的妙用

    事实上,WebDriver有两种方式“驱动”浏览器的方式.1. Selenium Server:和Selenium RC一样的,通过指定远端服务器IP地址和端口号,由这个远端服务器来驱动浏览器.2. ...

  7. Java字体优化

    需求背景 最近在做的项目显示的字体感觉太丑,于是乎想着DIY改进一下. 查阅资料,总觉得别人写的都不咋地,于是决心写一篇略微完善点的关于项目字体优化方面的文章. 当然,这篇文章不会教你如何使用True ...

  8. git github添加远程仓库出错 remote origin already exists

    在github上建立了仓库后,执行 git remote add origin https://github.com/zhangsan/sample.git时,提示 remote origin alr ...

  9. 2018.7.31 oracle rownum的理解

    一.Rownum的描述: rownum是一个伪列,数据库中并不保存rownum的列值,它是oracle系统为返回的结果集顺序分配的行编号,rownum是随着结果集生成的,一旦生成,在同一个结果集中就不 ...

  10. VedioCapture

    国内的技术的浮躁可见一般,在一个用了七八年的项目里面使用的类,居然拼写都是错的,在网上一搜,转载的也大有人在,最低级的错误,你可以不懂编程,但是只要上过高中,Video这个单词总该学过吧,居然转载的时 ...