GDB 使用指南
GDB 官网https://www.sourceware.org/gdb/GDB 是什么东西GDB, the GNU Project debugger, allows you to see what is going on inside’ another program while it executes – or what another program was doing at the moment it crashed.GDBGNU工程调试器允许你看到另一个程序在执行时“内部”发生了什么 - 或者另一个程序在崩溃时正在做什么。GDB can do four main kinds of things (plus other things in support of these) to help you catch bugs in the act:Start your program, specifying anything that might affect its behavior.Make your program stop on specified conditions.Examine what has happened, when your program has stopped.Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another.GDB可以做四种主要的事情以及支持这些事情的其他事情来帮助你发现错误启动程序并设置参数。打断点在特殊情况下停止。检查程序停止时发生了什么。执行到断点停止时或crash停止时可以打印当前变量更改程序中的内容以便您可以尝试更正一个错误的影响并继续了解另一个错误。GDB 支持哪些语言AdaAssemblyCCDFortranGoObjective-COpenCLModula-2PascalRust搭建实验环境安装 gdbyum install gdb 或 apt install gdb检查 gdb 是否安装成功gdb --version三种调试方式调试一个二进制文件 gdb a.out调试一个正在运行的进程 gdb -p调试一个挂掉的进程 gdb a.out core文件GDB 命令GDB 命令共有 12 大类类别介绍示例aliases其它命令的别名ni、tpbreakpoints在某个节点上让程序停止break、disabledata查看数据disassemble、printfiles指定并检查文件file、listinternals维护指令(GDB维护人员使用)flushregs、maintenanceobscure模糊的特性compile、recordrunning运行程序next、runstack检查堆栈bt、framestatus状态查询info、showsupport配套设施if、quittracepoints在不停止程序的情况下追踪程序的执行actions、collectuser-defined用户自定义命令1、运行命令run简记为 r 其作用是运行程序当遇到断点后程序会在断点处停止运行等待用户输入下一步的命令。continue简写c 继续执行到下一个断点处或运行结束 next简写 n单步跟踪程序当遇到函数调用时也不进入此函数体此命令同 step 的主要区别是step 遇到用户自定义的函数将步进到函数中去运行而 next 则直接调用函数不会进入到函数体内。 step 简写s单步调试如果有函数调用则进入函数与命令n不同n是不进入调用的函数的 until当你厌倦了在一个循环体内单步跟踪时这个命令可以运行程序直到退出循环体。 until行号 运行至某行不仅仅用来跳出循环 finish 运行程序直到当前函数完成返回并打印函数返回时的堆栈地址和返回值及参数值等信息。 call 函数(参数)调用程序中可见的函数并传递“参数”如call gdb_test(55)quit简记为 q 退出gdb2、断点breakn 简写b n:在第n行处设置断点 可以带上代码路径和代码名称 b OAGUPDATE.cpp:578 b fn1ifab条件断点设置breakfuncbreak缩写为b在函数func()的入口处设置断点如break cb_button delete 断点号n删除第n个断点 disable 断点号n暂停第n个断点enable断点号n开启第n个断点clear行号n清除第n行的断点 info b info breakpoints 显示当前程序的断点设置情况 delete breakpoints清除所有断点3、查看源码list 简记为 l 其作用就是列出程序的源代码默认每次显示10行。 list 行号将显示当前文件以“行号”为中心的前后10行代码如list12list 函数名将显示“函数名”所在函数的源代码如list main list 不带参数将接着上一次 list 命令的输出下边的内容。4、打印表达式print 表达式简记为 p 其中“表达式”可以是任何当前正在被测试程序的有效表达式比如当前正在调试C语言的程序那么“表达式”可以是任何C语言的有效表达式包括数字变量甚至是函数调用。 print a将显示整数 a 的值 print a将把 a 中的值加1,并显示出来 print name将显示字符串 name 的值 print gdb_test(22)将以整数22作为参数调用 gdb_test()函数 print gdb_test(a)将以变量 a 作为参数调用 gdb_test()函数 display 表达式在单步运行时将非常有用使用display命令设置一个表达式后它将在每次单步进行指令后紧接着输出被设置的表达式及值。如 display awatch表达式设置一个监视点一旦被监视的“表达式”的值改变gdb将强行终止正在被调试的程序。如watcha whatis 查询变量或函数 info function 查询函数 扩展info locals 显示当前堆栈页的所有变量5、查看运行信息where/bt 当前运行的堆栈列表 bt backtrace 显示当前调用堆栈 up/down 改变堆栈显示的深度setargs 参数:指定运行时的参数 show args查看设置好的参数 info program 来查看程序的是否在运行进程号被暂停的原因。6、保存历史命令编辑 ~/.gdbinitvim~/.gdbinit写入plaintextsethistorysave onsethistoryfilename ~/.gdb_historysethistorysize2000sethistoryexpansion on之后退出 gdb 会自动保存命令下次打开 gdb 上下箭头可以翻历史。7、分割窗口layout用于分割窗口可以一边查看代码一边测试 layout src显示源代码窗口 layout asm显示反汇编窗口 layout regs显示源代码/反汇编和CPU寄存器窗口 layout split显示源代码和反汇编窗口 Ctrl L刷新窗口8、其它功能shell 执行终端命令shellls打开日志功能set loggin on

相关新闻

Spring Boot中使用JdbcTemplate

Spring Boot中使用JdbcTemplate

一、前言 在Spring Boot开启JdbcTemplate很简单,只需要引入spring-boot-starter-jdbc依赖即可。JdbcTemplate封装了许多SQL操作,具体可查阅官方文档https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplat…

2026/8/18 19:15:29 阅读更多 →
JMETER连接DM8

JMETER连接DM8

JMETER连接DM8(最后附视频) 1 切换显示语言 2 添加jar包 3 创建线程组 4 创建JDBC Connection Configuration 4.1定义连接池名称 4.2 配置jdbc连接串 4.2.1 Database URL: jdbc:dm://127.0.0.1:5236 4.2.2 JDBC Driver class: dm.jdbc.driver.DmDriver 4.2.3 数据库用户名&a…

2026/8/18 19:15:29 阅读更多 →
php的pthreads扩展实现执行多线程任务

php的pthreads扩展实现执行多线程任务

一、PHP安装pthreads的多线程扩展下载pthreads源码:http://pecl.php.net/package/pthreads首先确定安装的php版本是线程安全的,如果不是的话重新编译加上 --enable-maintainer-zts \1.解压tar -zxvf pthreads-0.0.44.tgz ;2.进入源码文件夹 cd pthreads-…

2026/8/18 19:15:29 阅读更多 →

最新新闻

QUICK:GPU 加速的 ab initio / DFT 开源量子化学包—原理、安装实测与横向对比

QUICK:GPU 加速的 ab initio / DFT 开源量子化学包—原理、安装实测与横向对比

QUICK 是 UCSD Gtz Lab 与 Michigan State Merz Lab 联合开发的开源量子化学包,主打 GPU-native HF / DFT 计算、MPI 多卡扩展、内置 QM/MM 接口(与 AmberTools 26 直接集成)。专注于 HF/DFT 计算、几何优化、RESP 电荷和 QM/MM 模拟。最新版本 QUICK-26.03(2026-07-25)已…

2026/8/18 20:39:10 阅读更多 →
九种天气下的蓝调通勤:亚洲成年女性高清提示词实验

九种天气下的蓝调通勤:亚洲成年女性高清提示词实验

封面只负责建立系列节奏;正文保留九张独立高清竖图。 摘要| 同样是蓝色,春雨、干雷雨、海雾、轻雪、太阳雨、季风、秋风、霜冻和雨后蓝调会给面料完全不同的亮度与情绪。本组用九位约 22 岁亚洲成年女性、九种面孔与焦段,完成 5 套…

2026/8/18 20:39:10 阅读更多 →
AI 查库为什么要先做权限交集,再让模型看 Schema?

AI 查库为什么要先做权限交集,再让模型看 Schema?

先确定谁能看什么,再让模型生成 SQL;顺序本身就是安全边界。 摘要| 把数据库结构整包交给模型,再对生成 SQL 做一次关键词过滤,看起来省事,实际上把越权风险提前送进了提示词。本文结合 Microi吾码AI 当前 …

2026/8/18 20:39:10 阅读更多 →
干货:18 张思维导图,后端技术学习路线长这样!

干货:18 张思维导图,后端技术学习路线长这样!

1946年, 世界上第一台名叫「ENIAC」的通用计算机被发明出来, 它正如其名字那般仅仅是用来计算的。后来, 计算机数量变得越来越多起来, 当没有网络的时候, 每一台计算机都将会变成一个孤岛, 如此也就不会有如今互联网的那种繁荣景象了。「计算机网络」这门课程的学习路线是极为清…

2026/8/18 20:39:10 阅读更多 →
利用多台老旧笔记本搭建分布式集群,低成本本地部署800亿参数大模型

利用多台老旧笔记本搭建分布式集群,低成本本地部署800亿参数大模型

这次我们来看一个非常硬核的本地AI部署方案:用多台老旧笔记本搭建一个分布式计算集群,来运行参数量高达800亿(80B)的大语言模型。这个项目的核心思路不是追求单卡的极致性能,而是通过资源整合,让那些被淘汰…

2026/8/18 20:39:10 阅读更多 →
重构复杂条件逻辑:状态模式与策略模式实战

重构复杂条件逻辑:状态模式与策略模式实战

1. 为什么我们需要重构if/switch语句在代码维护过程中,我们经常会遇到这样的场景:一个方法里嵌套着七八层if判断,或者一个switch语句横跨上百行代码。这种代码结构不仅难以阅读和维护,还会带来一系列实际问题。我最近接手的一个电…

2026/8/18 20:38:09 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →