【Linux】gcc编译工具,断点的设置,gdb调试
文章目录
- 注意
- 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调试相关推荐
- Linux中GCC编译工具集中个软件的用途、gcc的简单编译以及ELF文件格式
文章目录 一.gcc编译工具集中各软件的用途 1.1 GCC 1.2 Binutils 1.3 C运行库 二.简单编译 2.1 代码编译过程 2.2 多个程序文件的编译 2.3 检错 2.4 库文件连 ...
- Linux编程之GCC编译工具实战-夏曹俊-专题视频课程
Linux编程之GCC编译工具实战-6075人已学习 课程介绍 本课程使得学员能够学会在linux中如何编译C/C++程序,使用GCC工具如何编译静态库,动态库,如何配置运行动态库. ...
- Linux文本编译工具VIM详解
Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 1>.vi: 全称Visual editor,即文本编 ...
- GCC编译工具集和nasm编译器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.gcc编译工具集 1.1gcc工具有哪些 1.2gcc编译过程 1.2.1.这里我们是使用一个hello.c文件进行演 ...
- [转] Linux GCC 编译使用
GCC使用 在使用GCC编译程序时,编译过程可以被细分为四个阶段: 预处理(Pre-Processing) 编译(Compiling)汇编(Assembling) 链接(Linking). 例如: ...
- Linux(gcc编译原理、过程以及常用调试命令)
PS:红色字体表示重点,绿色字体表示重要标题,块引用中表示Linux终端中的命令. 1.gcc / g++的安装 命令:sudo apt install gcc /gcc+ 2.gcc编译连接 //m ...
- Linux下编译build的命令,Linux内核编译中build目录设置
配置参数 最近在分析yocto中名为poky的嵌入式自动构建系统.在对内核进行定制的时候,看到了一个在进行内核编译时挺有用的特性,之前(作为野生程序员的我)一直没有发现. 该特性就是将源码与编译工作目 ...
- gcc编译工具常用命令以及汇编语言
文章目录 一.Linux GCC常用命令 二.GCC编译器背后的故事 总结 一.Linux GCC常用命令 1 新建一个文件test,代码如下: #include <stdio.h>int ...
- 问题合集 ----- linux下编译工具 make及相关
转自 http://mzl626.blog.163.com/blog/static/4770270200943011263246/ & http://docs.oracle.com/cd/E1 ...
- gyp linux,gyp编译工具
最近用到了 node-gyp 这个工具, 是node 社区对 google gyp 编译工具的一个封装, 使用 node-gyp 工具可以用C++为node 项目编写 addon. 了解了一下 goo ...
最新文章
- 《数据库技术原理与应用教程》一3-5信息世界与逻辑模型
- Java Review - 并发编程_DelayQueue原理源码剖析
- zabbix2.4.5自带mysql监控
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
- WCF面向服务应用程序系列之十:绑定-标准绑定(HTTP/TCP)
- 靠刷算法题,真的可以刷进大厂吗?
- 清华大学《操作系统》(七):虚拟存储、覆盖、交换
- 计算机控制分离性原理是什么,(第12讲)状态观测器和分离原理.ppt
- Bootstrap-CSS-排版
- Django module学习之模板
- pytorch学习——基本优化思想与最小二乘法
- 公司顾问岗位职责_【热门推荐】泉州奥育特教育科技有限公司
- 【ISWC2021】当知识图谱遇上零样本视觉问答
- Unity 3D 游戏开发学习资料集合(开发必备)
- Arduino Atmega328P烧写bootloader及熔丝
- 对话系统 | (8) 任务型对话系统概述
- dos计算机,dos操作系统,教您进入dos操作系统
- 觅知blibli专业版弹幕播放器开源无加密JSON解析版-后台功能一键管理-开源版22-8-24
- 稀疏表示和DOA估计的联系与区别(the link and the gap)
- SAR数据地物变化监测
热门文章
- jstl获取表格单元格值_表格单元格和位置绝对值
- Linux tcp拥塞控制
- DNS 智能解析功能评测之国内部分总结篇~
- 2021年南京天印中学高考成绩查询,2021年南京重点高中名单及排名,南京高中高考成绩排名榜...
- 基于babylon3D模型研究3D骨骼动画(1)
- 传奇泡点地图制作脚本
- 用Python编程语言来实现阿姆斯特朗数的检查
- MySQL数据导入导出方法与工具介绍
- 【软件分析/静态程序分析学习笔记】5.数据流分析基础(Data Flow Analysis-Foundations)
- 集合竞价与连续竞价02