gdb手册
0 前言 无论是PC还是嵌入式Linux应用开发,GDB是不可或缺的试工具,本文总结一些常用技巧。1 本地调试 PC调试,就是调试PC上的程序。1.1 程序(1)编译参数 使用gcc编译程序,为了使用gdb进行调试,加上选项-g:gcc -g test.c图1.1 add-symbol-file(2)加载程序 先启动gdb工具,然后使用file命令加载需要调试的程序:gdb # 启动gdb工具 file a.out # 加载程序a.out # or gdb a.out(3)调试进程 如果想调试系统开机启动的进程(例如窗口管理器)怎办呢?可通过下面方法之一进行调试:方法1:--pidgdb --pid PID # 例如 gdb --pid `pidof ukwm` # 调试UbuntuKylin-22.04管理器,注:需SSH远程登录来执行该命令以避免界面卡住无法操作方法2:attachgdb attach PID # 也可先启动gdb,再执行attach命令,相反命令为detach[31]注:上述两种方法的效果都是一样的,都可通过detach命令取消调试;尝试attach D状态(可通过“pid -p PID”确认)进程会卡死[25]!1.2运行 加载程序后,可以使用start或run命令运行:start # 单步运行 # or run # 可用简称“r”代替,完整运行1.2.1 参数方法一set args 参数 run方法二run 参数 # “run”可简化为“r”1.2.2 暂停 “Ctrl - C”默认会暂停被调试程序的执行。1.2.3 继续 设置断点后,可以使用c命令继续从断点处开始执行程序(使用r命令会使得程序重新运行)c # continue1.2.4 单步(1)C/C++ 可以使用n、s命令进行单步调试,其中后者为step in,会跳进调用的函数里面:s # step, (step in) n # next, (step over)(2)汇编 汇编级别的单步可通过ni、si命令进行,其中后者会进入汇编和C函数内部[34]。1.2.5 退出quit # 退出gdb1.3 断点(1)增加 增加端点的方式有多种,详见下面第1.3.1、1.3.2、1.3.2小节。(2)禁止/使能disable id enable id(3)删除d id # 删除编号为id的断点 d # 删除所有断点 clear # 清除所有断点 clear id # 清除第18行处的断点 clear func1 # 清除函数func1处的断点(4)查看info b # 查看当前设置的所有断点 # or i b 结果中的“Enb”列的值表示该断点是否使能(y/n):图1.2 断点使能状态1.3.1 普通断点# 函数名 b func_name # 在函数func_name处设置断点,C++还需指定类名,例如“RenderThread::main” # 代码行 b 18 # 在第18行处设置断点 b test.c:8 # 在src/main.cpp的第18行处设置断点[23] C++ new操作符也可以设置断点:b operator new注:在指定该断点行代码之前停止执行,而不是执行完毕再停止,该特性直接影响后面热补丁,如果需要执行断点行代码,需要添加next指令。1.3.2 条件断点# 单条件 b test.c:8 if a==10 # 当i变量等于10时断点[23][24] # 双条件 b test.c:8 if (a==10 b==10) # 当i变量等于10时断点[23][24]1.3.3热补丁 遇到断点之后可以设置一些自动执行的命令以实现热补丁效果[46],用于临时解决bug或验证问题:b func_name commands 1 # 该序号是变化的,上述“b”命令会提示 printf "parameter a = %d\n",a set var a=10 # 改变函数形参值,函数内局部变量貌似设置不了 printf "parameter a changed to %d\n",a jump 26 # 跳转到第26行执行 continue end 在补丁中可以设置、查看变量,还可以改变执行流程(next、jumb、continue、return、finish)。(1)设置 除了改变变量值,还可以设置跳转(jumb)等(详见参考资料[46]);(2)查看 除了打印变量值,还可以查看函数地址对应的函数名(详见第1.10小节)。1.3.4动态打印手动:程序到了断点位置暂停下来后,手动执行p或display命令将变量打印出来自动:通过dprintf命令添加自动打印(打印完毕后程序不暂停,而是继续执行)[47],打印位置的指定方法同前面“b”命令(可通过行号、文件名+行号、函数名等方式指定打印位置),格式化打印类似printf()函数,例如:(1)存粹打印函数名dprintf QueueKeyboardEvents,"QueueKeyboardEvents\n"(2)打印参数或变量# 将xf86PostButtonEventM(DeviceIntPtr device, int is_absolute,int button, int is_down, const ValuatorMask *mask)@xorg-1.20.13/hw/xfree86/common/xf86Xinput.c的前三个函数自动打印出来 dprintf xf86Xinput.c:1369,"is_absolute = %d, button = %d, is_down = %d\n",is

相关新闻

抖音批量下载神器:douyin-downloader完整指南,轻松获取无水印视频

抖音批量下载神器:douyin-downloader完整指南,轻松获取无水印视频

抖音批量下载神器:douyin-downloader完整指南,轻松获取无水印视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and …

2026/10/18 23:38:29 阅读更多 →
Glide 是怎么进行生命周期管理的

Glide 是怎么进行生命周期管理的

本质上,Glide 并不是“监听”或“观察” Activity,而是利用了 Android 系统给组件设定的生命周期回调强制执行规则,玩了一手“寄生”。我把这个“自动管理”的底层流水线拆解为 4 个核心步骤,你一看就明白了:第 1 步&a…

2026/10/14 1:44:52 阅读更多 →
2026手机播放器推荐:支持4K的选哪款?

2026手机播放器推荐:支持4K的选哪款?

2026年适合大众使用的4K手机播放器可优先选VLC、MX Player、nPlayer、爆米花等产品,不同播放器适配不同使用场景,建议结合自身观影资源存储方式、设备生态选择即可。手机播放器核心选型标准本地播放为主:优先选解码能力强、音视频格式兼容性高…

2026/10/19 20:33:30 阅读更多 →

最新新闻

GGUF 量化原理新手详解:Ling-3.0-tiny-GGUF 的 Q4_K_M 如何以 4.8GB 保全心智

GGUF 量化原理新手详解:Ling-3.0-tiny-GGUF 的 Q4_K_M 如何以 4.8GB 保全心智

【免费下载链接】Ling-3.0-tiny-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/Ling-3.0-tiny-GGUF 点击查看 免费下载 这篇文章用小白也能看懂的方式,讲清 GGUF 量化原理:Ling-3.0-tiny-GGUF 是一个 7.9B 总参数、每 toke…

2026/10/20 2:04:15 阅读更多 →
Python股票数据分析实战:爬虫清洗与回测全流程

Python股票数据分析实战:爬虫清洗与回测全流程

简介:围绕股票大数据分析的Python实战资源,适合金融数据分析初学者及有Python基础、希望系统掌握爬虫采集与量化分析流程的读者。资源为7z压缩包,大小4.47MB,站内暂未列出文件明细;结合主题内容可预期包含Python爬虫脚…

2026/10/20 2:04:15 阅读更多 →
Spark 3.2.0预编译包Hadoop版本兼容性深度解析

Spark 3.2.0预编译包Hadoop版本兼容性深度解析

简介:本资源为 Apache Spark 3.2.0 官方二进制发行版(Hadoop 3.2 兼容构建),面向大数据开发工程师、数据工程师及高校学习分布式计算的中高级学习者,用于快速部署本地开发环境、搭建集群实验平台或开展流处理、SQL分析…

2026/10/20 2:04:15 阅读更多 →
kmodes实战:用Python搞定分类数据聚类

kmodes实战:用Python搞定分类数据聚类

简介:kmodes开源库的完整Python实现,提供k-Modes与k-Prototypes两种聚类算法,专用于处理纯分类变量及数值/分类混合数据。面向数据分析、机器学习开发者,解决传统k-means对非数值特征无法直接聚类的痛点。压缩包共30个文件&#x…

2026/10/20 2:04:15 阅读更多 →
SQLMap绕过WAF实战指南:从原理到参数调优

SQLMap绕过WAF实战指南:从原理到参数调优

那年我跟一期安全培训,第19天正好落在Web漏洞的SQL注入专题上。老师没有按课本讲怎么手工注入,而是花了大半节课专门演示SQLMap怎么绕过WAF。当时我还不理解为什么单独挑这个点讲,后来自己在授权测试里被WAF扇了无数次巴掌,才明白…

2026/10/20 2:04:15 阅读更多 →
数据搜索:跨文件搜索,清单数据一搜即得

数据搜索:跨文件搜索,清单数据一搜即得

干工程的,谁没被找数据卡过脖子。下午要交标,甲方临时要一份历史项目的报价明细;结算对数对不上,得翻当时的清单查原始数据——文件在哪个电脑、哪个文件夹,都得先想半天。端点星工程助手的数据搜索,CtrlF …

2026/10/20 2:03:15 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →