GDB 基本用法

2026 蓝牙技术趋势展望:信道探测、Auracast、高吞吐 HID 与 AI 融合引领行业变革 蓝牙技术2026年展望:信道探测、Auracast广播音频和AI融合将引领创新。蓝牙信道探测技术将实现亚米级精确定位,在工业资产追踪和汽车数字钥匙领域大显身手。Auracast广播音频将持续拓展公共场所应用,提升音频包容性体验。高数据吞吐量和超低延迟功能将支持AR/VR等新兴场景。AI与蓝牙的深度融合将推动可穿戴设备智能化发展,实现实时健康监测和个性化音频服务。蓝牙技术凭借其多功能性和创新力,正成为连接万物的关键技术,持续推动行业变革和生活品质提升。 阅读详情

1、带着调试选项编译、构建调试对象

    在原来的的选项上再加上 -g 选项,如 gcc -g -Wall -O2 -o test test.c 或者 gcc -g -o test test.c。有一点需要注意的是调试时最好去掉优化选项,比如内联(inline)函数优化(去掉函数调用,而将函数代码在调用的位置展开),该函数名上就无法设置断点。这是因为内联函数优化从目标文件中去掉了该函数的入口点,符号表中也没有该函数的名称。优化还会将局部变量保存到寄存器中,因此无法显示该局部变量的内容,必须直接查看寄存器的值。当然,如果程序确实需要优化那么还是应该直接调试带有优化选项的可执行文件版本,因为只管理优化了的版本的可执行文件比管理优化的+没有优化的两个版本的可执行文件更加简单。

2、启动调试

    2、1    gdb 可执行文件名。 如,gdb test 或 gdb test.exe
    2、2    先键入 gdb 然后 file test 或 file test.exe

3、调试

3、1断点

3、1、1设置断点

    设置断点命令为 break ,可以简写为  b  。格式:
       break 函数名,如 break main
       break 行号,如 break 100
       break 文件名:行号,如 break test.c:100
       break 文件名:函数名,如 break test.c:tet
       break +偏移量 如 break +100
       break -偏移量 如 break -100
       break *地址 如 break *0x08116fd6
       break (即不指定断点位置),在下一行代码上设置断点,如 break

3、1、2查看断点信息

    info break

3、1、3删除断点

    delete 3//删除第三个断点
    clear //清楚所有断点

3、2运行

    没有参数时: run
    有参数时: run 参数,如 run hello 。注意,此时参数从 argv[1] 开始,因为在运行 gdb test 或 file test时就传入了第一个参数argv[0]。

3、3显示栈

    backtrace命令可以在遇到断点而暂停执行时显示栈帧,可简写为bt。此外backtrace的别名还有where和info stack。

3、3、1显示所有栈帧

    backtrace

3、3、2只显示开头 N 个栈帧

    backtrace N,如 backtrace 3 只显示前3个栈帧

3、3、3只显示最后 N 个栈帧

    backtrace -N,如backtrace -3 只显示最后3个栈帧

3、3、4同时显示栈帧及其局部变量

    backtrace full//显示所有栈帧及其局部变量
    backtrace full N//显示前 N 个栈帧及其局部变量
    backtrace full -N//显示最后 N 栈帧及其局部变量

3、4显示变量

    print命令可以显示变量,同时可以简写为 p 。用法如下:
        p argv
        p *argv
        p argv[0]
        p argv[1]

3、5显示寄存器

3、5、1显示所用寄存器

    info reg

3、5、2显示单个寄存器

    p $eax//即在寄存器名前面加上$即可

3、6显示内存

    用 x 命令可以显示内存中内容。其一般格式为:
            x/nfu addr。
    nfu是可选的,如果采用默认的nfu就可以不需要加斜线“\”
            n,重复的次数
    重复数是十进制整数,默认为1。他确定显示多少单元内存(单元由 u 确定)
            f,显示格式
   显示格式是被print命令使用众多格式之一('x','d','u','o','t','a','c','f','s')另外还有'i'(机器指令)。最初默认的是'x'(16进制)。在你每次使用 x 或者 print 命令之后默认值都会随之发生改变。
            u,单位大小
单位大小可以是一下任何之一:
   bBytes
   hHalfwords(two bytes)
   wWords(four bytes).最初的默认值。
   gGiant words(eight bytes)
对于格式 'i' ,单位大小是被忽视了的而且通常不写。
            addr,开始显示的地址
    addr是你想GDB显示内存内容的开始地址。该表达式没必要必须是一个指针值(虽然他可能是);他始终被表述为一个字节内存的整型地址。
    例如'x/3uh 0x54320'命令表示显示从地址0x54320开始的以无符号十进制数的3个半字的内容。

3、7反汇编

    反汇编命令为disassemble,简写为disas。
       disassemble。---- 反汇编当前整个函数。
       disassemble 程序计数器。--- 反汇编以程序计数器值为地址所在的函数。
       disassemble 开始地址 结束地址。--- 反汇编从开始地址到结束地址之前的部分。执行时可能想执行到函数内部,此时可以使用 (step 简写为 p)命令。

3、8单步执行

    单步执行的意思是根据源代码一行一行的执行。执行源代码中一行的命令为 next (简写为n)

3、9 继续执行

    调试时,可以使用continue(简写为 c )命令继续运行程序。程序在遇到断点后再次暂停运行。如果没有断点就会一直运行到就会一直运行到结束。格式:
    continue
    continue 次数 //忽略断点的次数

3、10 监视点

    大型软件或者大量使用指针的程序中,很难弄清楚变量在什么地方被改变。想要找到变量在何处被改变,可以使用watch命令(监视点,watchpoint)。
   wath <表达式>。<表达式>发生变化时暂停运行。此处<表达式>的意思是常量或者变量。
   awatch <表达式>。<表达式>被访问、改变时暂停运行。
   rwatch <表达式>。<表达式>被访问是暂停运行。

3、11 改变变量的值

格式:
    set variable <变量>=<表达式>。例如,set variable i = 0 。
TSN新技术,让您的设备网络“更实时、更确定、更安全” 近日,工业和信息化部发布了2022年第23号公告,批准发布行业标准YD/T 4134-2022《工业互联网时间敏感网络需求及场景》。该标准是国内首个时间敏感网络(TSN)技术标准,标志着我国TSN技术标准体系建设迈出了坚实的一步,对构建工业互联网网络标准体系具有重要意义。TSN源于Time-Sensitive Networking的缩写,中文译名为时间敏感网络,因其具备的确定性和微秒级交互特性,受到了对实时性要求较高的工业控制领域的关注。TSN与工业数智化。 阅读详情

相关推荐

【屠龙之术】SAP 欧洲公司 高级合规性报表 FEC

所谓FEC ,其实是法国税务局要求法国的公司,每年要向税务局进行提交的税务报告,这个报告有特殊的格式,进行加密,法国公司要在收到税务局通知以后,及时进行报送,如果不报送,或者报送不合格文件,将面临5000欧的罚款。-----------------------------------------------进入正文----------------------------------------------------------------------有专门的T-code,PPT我就不贴了,我直接截图。

竹大的博客 1961

GDB调试

&#13; 用GDB调试程序目录[隐藏]1 GDB概述2 一个调试示例3 使用GDB4 GDB的命令概貌5 GDB中运行UNIX的shell程序6 在GDB中运行程序7 调试已运行的程序8 暂停/恢复程序运行8.1 设置断点(Break Points)8.2 设置观察点(WatchPoint)8.3 设置捕捉点(CatchPoint)8.4 维护停止点8.5 停止条件维...

BeyondCN2008的专栏 361

电力电子技术复习笔记

通常在开关过程前后加入谐振,使开关开通前电压先降到0,关断前电流先降到0,消除开关过程电压、电流的重叠,降低它们的变化率,从而大大减小甚至消除开关损耗。小信号线性化模型的原理:忽略开关频率分量和开关频率谐波分量及其边频分量,建立占空比、输入电压等的低频扰动对变换器中的电压、电流影响的模型。解:可以利用变压器的变比改变输出电压大小,避免控制过程的占空比过小或过大,提高控制精度,同时有利于减轻输出电路中电力电子器件的耐压要求。驱动电路:用于控制功率半导体器件的开关,从而控制电路的电流和电压。

Miracle Fan的博客 1万+

Linux如何使用gdb打印变量的地址

事实上很简单,只在需要打印地址的变量前加上取地址符&即可。具体操作如下: imaginemiracle@ubuntu:test$ gdb a.out Reading symbols from a.out... (gdb) l 1 int main(int argc, char **argv) 2 { 3 int a = 10; 4 int b = 20; 5 6 int result = 0; 7 8 result = a + b / a; 9 10

Imagine Miracle的博客 1万+

别再乱删文件了!修复Print Spooler服务自动停止的3个关键检查点(附Win10/Win11实测)

本文深入解析Windows系统中Print Spooler服务自动停止的常见原因及修复方法。从第三方驱动冲突、权限与服务依赖关系到打印队列积压,提供3个关键检查点的详细排查步骤,帮助用户彻底解决打印服务异常问题,适用于Win10/Win11系统。

weixin_31569671的博客 675

LTR-390UV-01对比VEML6075:5个真实项目中的选型避坑指南

本文对比了LTR-390UV-01和VEML6075两款环境光传感器在5个真实项目中的表现,提供了选型避坑指南。通过智能手环、农业温室、紫外线消毒柜等场景的实测数据,分析了动态范围、抗干扰性、温度稳定性等关键差异,帮助开发者在成本与性能间做出最优选择。

weixin_28733777的博客 220

linux gdb 下程序调试方法

gdb查看指定地址的内存地址的值:examine 简写 x-----使用gdb> help x 来查看使用方式 x/ (n,f,u为可选参数) n: 需要显示的内存单元个数,也就是从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义 f:显示格式 x(hex) 按十六进制格式显示变量。 d(decima...

网瘾少年丶的博客 493

STM32F103+LAN9252实战:从站代码迁移中的5个硬件坑与解决方案

本文分享了将EtherCAT从站代码从STM32F767迁移至STM32F103平台时,搭配LAN9252遇到的五个典型硬件问题及解决方案。核心挑战包括时钟源不匹配、FSMC时序配置、中断映射错误、片选资源不足以及Flash烧录异常。文章通过实战经验,强调了硬件差异对代码迁移的关键影响,并提供了具体的调试思路与配置方法。

p5l2m9n4o6q的博客 698

GDB查看指定内存地址的内容——指令x

Overview:![examine指令参数](http://img.blog.youkuaiyun.com/20170629170625941?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpZmVuZ19ndQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEa

Haifeng的博客 6万+

把 ABAP 接到外部世界的几条路, 从 Web Service 到 RFC、BAPI 与 IDoc 的完整理解

摘要: ABAP 的连接能力是其长期成为企业核心的关键,不仅支持通用协议(HTTP、SOAP、XML),还保留了 SAP 特有的技术(RFC、BAPI、IDoc)。Web Service 是跨系统通信的主轴,依赖 SOAP/WSDL 实现契约化协作,而 Enterprise Service 更强调业务语义的复用与治理。经典技术如 RFC 和 BAPI 因高效稳定仍广泛使用,尤其适合紧耦合场景。ABAP 通过分层工具箱(如代理生成、服务注册)实现灵活集成,平衡新旧技术,满足多样化的企业连接需求。 (字数:15

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 139

阿里云百炼全解析:一站式大模型开发平台的架构与行业实践

摘要: 阿里云百炼平台通过一站式架构革新大模型开发范式,将传统碎片化工具链整合为统一工作流,实现开发周期从月级到小时级的跃迁。其核心架构包含接入层、引擎层与资源层,关键技术突破包括MCP服务协议、多模态引擎及高性能训练优化。平台提供全生命周期开发支持,从数据准备到模型部署,并通过VPC隔离、数据加密构建企业级安全体系。已在医疗、电力等行业实现显著增效,如阿斯利康药物分析系统准确率提升至95%。未来将向多Agent协同、边缘计算等方向演进,推动AI技术深度融入产业核心。

fudaihb的博客 1990

C字符串分析(使用GDB调试进行地址分析)

作者: Sophisticated 在 C 语言中,字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。 char greeting[6] = {'H', 'e', 'l', ...

lw_yang的博客 1541

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

共轭梯度法的核心原理是求解优化问题的共轭向量组作为优化方向,由于优化方向间彼此正交,故每次迭代只需沿着一个方向寻优而互不影响。本文设计基于ESDF的障碍约束、曲率约束和平滑约束,基于ROS C++和Python提供了共轭梯度法的轨迹优化实践案例

FRIGIDWINTER的博客 1万+

gdb的基本用法-引用

gdb使用

weixin_40673765的博客 275

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

GDB的基本用法

本文参考《Debug Hacks》一书所作 —— 每天进步一点点。 一. 准备      通过 gcc 的 -g 选项生成调试信息。      $ gcc -Wall -O2 -g 源文件      -g选项可以使用仅可GDB使用的一些附加调试信息;这些附加信息可以使GDB工作的更好,但是也可能令其他调试器崩溃或者不能读该文件。 二. GDB基本用法      启动:      $

bolike的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

gdb的基本用法

目录gdb的基本用法设置断点删除断点禁用启用断点逐行调试查看变量值查看调用栈显示源代码gdb其他用法条件断点查看寄存器的值查看汇编动态显示当前代码和汇编总结 gdb的基本用法 gdb的基本用法比较简单,一般只要掌握像在vs调试那样设置断点、逐行调试、查看变量值和调用栈等即可。 设置断点 在说设置断点前,先讲下查看断点,使用info break命令可以查看所有断点。 设置断点使用break或者b命令。 源程序: int badFunc(int i) { int r = i; if (i%2 =

weixin_42981623的博客 2459

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

GDB调试工具的基本用法

GDB是unix平台下的调试工具,具有的功能和平时使用的vs差不多相同,但在特殊环境下, 各自具备着自己的优点。 我们先学习一下GDB常用的基本命令: 注意:GDB调试的程序必须是gcc -g后生成的可执行文件 例如:gcc -g source.c -o source source为生成的可执行文件 1、进入GDB调试器: 命令:gdb 可执行文件     gdb source 2、例出代码...

caoj_huangy的博客 910

gdb基本用法

1.使用前:gcc编译时需要加入-g 生成可执行文件,格式如下$ gcc -g *.c -o *2.进入gdb:生成编译生成可执行文件后,gdb有两种调试模式:普通模式:$ gdb -tui *上下分屏模式:$ gdb *3.gdb调试基本快捷键1)list/l        列出当前调试代码2)breakpiont/bb    行号/函数名断点(当前断点指向将要执行却未被执行的代码)(gdb)b...

kuaiguita9597的博客 230

GDB基本用法

GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。

dadaima_sama的博客 4777

GDB 基本用法,以及多进程、多线程的调试

GDB基本用法 该内容主要是把几个参考的博客内容进行整理和补充,并采用markdown语法对原博客内容重写 参考资料: GDB基本命令(整合) 一、gdb调试基本知识 调试器指示的是将要执行的代码行 只有在编译时拥有调试符号(-g)的程序才能在调试时看到源码 同一行上有多个断点时,gdb仅中断在断点号最小的那个断点上 断点可以设置在同一程序的不同文件中 在任何给定时间,gdb只...

deemo的博客 677

gdb调试的基本用法

gdb调试的基本用法 gdb是GNU开源组织发布的一个强大的UNIX下的程序调试工具。 一般来说,gdb主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 可让被调试的程序在你所设置指定的断点处停住。(断点可以是条件表达式) 当程序被停住时,可以检查此时你的程序中所发生的事。 动态的改变你程序的执行环境。 从上面看来,gdb和一般的调试工具没...

IT_Quanwudi的博客 934

gcc,gdb基本用法

gcc创作背景: GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。[2]  GCC是

wp1995的博客 411

gdb用法(一)基本 gdb 命令

GDB 概述 GDB是GNU开源组织发布的一个强大的UNIX下的程式调试工具。或许,各位比较喜欢那种图像界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图像化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程式,能按照你的自定义的需求随心所欲

w._.m 4730
上一篇: NAND FLASH vs NOR FLASH
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值