文章目录

  • 注意
    • 1、在gcc编译过程中一定要加入选项 `-g`;
    • 2、只有在代码处于`运行`中在`暂停`状态时才能查看变量值;
    • 3、设置断点后,程序在指定行之前停止。
  • 总结
  • 主要内容
    • 1、将当前目录下的`myself.h`文件移动到`/usr/include/`文件夹下
    • 2、搜索 `/usr/include/my*`路径下 以`my`开头的所有文件
    • 3、gdb调试代码
      • 3.1 进入gcb编译模式
      • 3.2 查看源代码 `l` (是小写的L)
      • 3.3 设置断点 Break `b`
        • 3.3.1 设置行断点
        • 3.3.2 条件断点
        • 3.3.3 设置函数断点
        • 3.3.4 断点后按照预设的变量值运行
      • 3.4 查看设置的断点`info b`
      • 3.5 删除断点 Delete `d 断点号`
        • 1.指定单个断点
        • 2.所有点断 `d`
    • 4、运行 调试 Run `r`
      • 4.1 直接运行 到断点处停
      • 4.2 单步执行 Next `n` 并 查看值的变化Print `p`
      • 4.3 Continue 到断定后,继续往下运行`c`
      • 4.4 Step 跳入函数内部进行单步 `s`
    • 5、查看当前变量的值 `p 变量名`
    • 6、退出gdb调试 Quit `q`
  • 每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

注意

1、在gcc编译过程中一定要加入选项 -g

2、只有在代码处于运行中在暂停状态时才能查看变量值;

3、设置断点后,程序在指定行之前停止。

总结

常用命令
l 查看源代码
b 行号 或函数名或f条件(==10)
info b 查看断点
d 断点号 d 无 删除所有断点
r 运行
p 变量名 查看变量值
set var变量名=变量值_新
S 进入函数内单步
n 不进入函数内单步
C 继续运行
q 退出gdb

主要内容

1、将当前目录下的myself.h文件移动到/usr/include/文件夹下

sudo mv myself.h /usr/include/

2、搜索 /usr/include/my*路径下 以my开头的所有文件

ls -l /usr/include/my*

3、gdb调试代码

  • gcc 语法错误
  • gdb 算法错误

3.1 进入gcb编译模式

要使用gdb编译器调试代码,执行gcc时要用操作-g

gcc f_gdb.c -g -o f_gdb

相当于是给了这个文件1个标注,这样才能使用下面这条语句调试

gdb f_gdb

3.2 查看源代码 l (是小写的L)

1、每次查看10行代码

l

2、 也可以指定行号,查看第Number行 前后共10行的代码

l Number

3.3 设置断点 Break b

3.3.1 设置行断点


假设我要在这行设置断点,fun()就不会被执行

b 13

3.3.2 条件断点

b 行数 if 判断语句

运行到 i=10时,再执行断点命令

3.3.3 设置函数断点

b 函数名

3.3.4 断点后按照预设的变量值运行

set var b=4

多了 4

3.4 查看设置的断点info b

info b


断点在文件f_gdb的main中 第13行

3.5 删除断点 Delete d 断点号

1.指定单个断点

d 1
2.所有点断 d
d

4、运行 调试 Run r

4.1 直接运行 到断点处停

r

停在该处,此时该处还未执行

4.2 单步执行 Next n 并 查看值的变化Print p

n

4.3 Continue 到断定后,继续往下运行c

c

此时停在了第2个断点处

4.4 Step 跳入函数内部进行单步 s

s

5、查看当前变量的值 p 变量名

p varNum

6、退出gdb调试 Quit q


每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

【Linux】gcc编译工具,断点的设置,gdb调试相关推荐

  1. Linux中GCC编译工具集中个软件的用途、gcc的简单编译以及ELF文件格式

    文章目录 一.gcc编译工具集中各软件的用途 1.1 GCC 1.2 Binutils 1.3 C运行库 二.简单编译 2.1 代码编译过程 2.2 多个程序文件的编译 2.3 检错 2.4 库文件连 ...

  2. Linux编程之GCC编译工具实战-夏曹俊-专题视频课程

    Linux编程之GCC编译工具实战-6075人已学习 课程介绍         本课程使得学员能够学会在linux中如何编译C/C++程序,使用GCC工具如何编译静态库,动态库,如何配置运行动态库. ...

  3. Linux文本编译工具VIM详解

    Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 1>.vi: 全称Visual editor,即文本编 ...

  4. GCC编译工具集和nasm编译器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.gcc编译工具集 1.1gcc工具有哪些 1.2gcc编译过程 1.2.1.这里我们是使用一个hello.c文件进行演 ...

  5. [转] Linux GCC 编译使用

    GCC使用 在使用GCC编译程序时,编译过程可以被细分为四个阶段: 预处理(Pre-Processing) 编译(Compiling)汇编(Assembling) 链接(Linking). 例如:  ...

  6. Linux(gcc编译原理、过程以及常用调试命令)

    PS:红色字体表示重点,绿色字体表示重要标题,块引用中表示Linux终端中的命令. 1.gcc / g++的安装 命令:sudo apt install gcc /gcc+ 2.gcc编译连接 //m ...

  7. Linux下编译build的命令,Linux内核编译中build目录设置

    配置参数 最近在分析yocto中名为poky的嵌入式自动构建系统.在对内核进行定制的时候,看到了一个在进行内核编译时挺有用的特性,之前(作为野生程序员的我)一直没有发现. 该特性就是将源码与编译工作目 ...

  8. gcc编译工具常用命令以及汇编语言

    文章目录 一.Linux GCC常用命令 二.GCC编译器背后的故事 总结 一.Linux GCC常用命令 1 新建一个文件test,代码如下: #include <stdio.h>int ...

  9. 问题合集 ----- linux下编译工具 make及相关

    转自 http://mzl626.blog.163.com/blog/static/4770270200943011263246/ & http://docs.oracle.com/cd/E1 ...

  10. gyp linux,gyp编译工具

    最近用到了 node-gyp 这个工具, 是node 社区对 google gyp 编译工具的一个封装, 使用 node-gyp 工具可以用C++为node 项目编写 addon. 了解了一下 goo ...

最新文章

  1. 《数据库技术原理与应用教程》一3-5信息世界与逻辑模型
  2. Java Review - 并发编程_DelayQueue原理源码剖析
  3. zabbix2.4.5自带mysql监控
  4. 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
  5. WCF面向服务应用程序系列之十:绑定-标准绑定(HTTP/TCP)
  6. 靠刷算法题,真的可以刷进大厂吗?
  7. 清华大学《操作系统》(七):虚拟存储、覆盖、交换
  8. 计算机控制分离性原理是什么,(第12讲)状态观测器和分离原理.ppt
  9. Bootstrap-CSS-排版
  10. Django module学习之模板
  11. pytorch学习——基本优化思想与最小二乘法
  12. 公司顾问岗位职责_【热门推荐】泉州奥育特教育科技有限公司
  13. 【ISWC2021】当知识图谱遇上零样本视觉问答
  14. Unity 3D 游戏开发学习资料集合(开发必备)
  15. Arduino Atmega328P烧写bootloader及熔丝
  16. 对话系统 | (8) 任务型对话系统概述
  17. dos计算机,dos操作系统,教您进入dos操作系统
  18. 觅知blibli专业版弹幕播放器开源无加密JSON解析版-后台功能一键管理-开源版22-8-24
  19. 稀疏表示和DOA估计的联系与区别(the link and the gap)
  20. SAR数据地物变化监测

热门文章

  1. jstl获取表格单元格值_表格单元格和位置绝对值
  2. Linux tcp拥塞控制
  3. DNS 智能解析功能评测之国内部分总结篇~
  4. 2021年南京天印中学高考成绩查询,2021年南京重点高中名单及排名,南京高中高考成绩排名榜...
  5. 基于babylon3D模型研究3D骨骼动画(1)
  6. 传奇泡点地图制作脚本
  7. 用Python编程语言来实现阿姆斯特朗数的检查
  8. MySQL数据导入导出方法与工具介绍
  9. 【软件分析/静态程序分析学习笔记】5.数据流分析基础(Data Flow Analysis-Foundations)
  10. 集合竞价与连续竞价02