GDB基本使用指南

【GDB】gdb的原理和使用 coredump,核心转储文件,程序运行过程中发生异常退出时,操作系统把程序当前的内存状态存储在core文件中,称为coredump。gdb符号表是gdb在调试过程中使用的一种数据结构,包含了程序中函数、变量等信息,用于在gdb调试过程中进行符号解析和地址定位。函数符号表:包含程序中定义的函数名称、参数、返回值等信息;变量符号表:包含程序中定义的变量名称、类型、作用域等信息;类型符号表:包含程序中定义的数据类型,例如结构体、枚举、类型别名等;地址映射表:将程序中的虚拟地址映射到物理地址。 阅读详情

什么是 GDB?

GDB(GNU Debugger)是一个强大的调试工具,主要用于调试 C、C++ 和其他语言编写的程序。

它让我们可以监控、控制程序的执行,从而查找并修复错误。

安装 GDB

ubuntu上一条命令可以搞定:

sudo apt install gdb

测试用例

我们写个简单的代码作为测试用例:

  1 #include <stdio.h>
  2 
  3 int main() 
  4 {
  5     int var;
  6     var = 10;
  7     printf("var is %d\n", var);
  8     return 0;
  9 }

添加调试选项

为了能够使用GDB调试我们的代码,我们需要在编译时加上-g选项,从而添加调试信息:

gcc -g gdb_test.c -o gdb_test.out

启动 GDB

使用以下命令启动 GDB,并指定要调试的可执行文件:

gdb ./gdb_test.out

基本命令

1. 运行程序

最基础的,使用run命令执行程序:

(gdb) run

2. 设置断点

我们可以使用断点来暂停程序的执行,从而检查程序状态。

打断点的命令是 break ,可以指定函数名或行号:

(gdb) break 7           # 在第7行处暂停
Breakpoint 1 at 0x115c: file gdb_test.c, line 7.

需要先设置断点,再执行run

3. 查看当前断点

可以使用 info breakpoints 命令查看当前断点信息:

(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000000115c in main at gdb_test.c:7

4. 查看变量值

# 运行到断点
(gdb) run
Starting program: /home/ubuntu/gdb_test.out 

Breakpoint 1, main () at gdb_test.c:7
7	    printf("var is %d\n", var);

# 查看变量
(gdb) print var
$1 = 10

4. 继续执行

当程序在断点处暂停时,可以使用 continue 命令继续执行程序,直到下一个断点或程序结束:

(gdb) continue
Continuing.
var is 10
[Inferior 1 (process 139948) exited normally]

5. 单步调试

当程序在断点处暂停时,我们可以使用单步调试:

  • 单步执行:使用 step 或s命令逐行执行代码,遇到函数会进入函数内部:
(gdb) step
  • 下一步执行:使用 next 或n命令逐行执行代码,但是遇到函数不会进入函数内部:
(gdb) next

6. 退出 GDB

要退出 GDB,可以使用 quit 或q命令:

(gdb) quit

小结

通过上面的操作,大家应该可以感觉到GDB在调试方面给我们带来的便利。
希望本文对大家有帮助。
本文首发于微信公众号《Linux在秋名山》,欢迎大家关注~

程序调试利器——GDB使用指南 GDB是探查查询运行中各种疑难问题的利器。在实际应用中,问题产生的原因通常要复杂得多。程序可能在标准库中产生了Crash,整个堆栈可能都是标准库代码;程序可能由于我们的代码的操作,最终在三方中间件中产生了问题;整个异常堆栈可能都不包含我们自己开发的代码;面对被三方库不知以何种方式使用的变量。我们除了需要熟悉GDB的使用之外,在这些复杂的实际问题上,我们还需要尽可能多地了解我们使用的其它库的机制和原理。下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】 阅读详情

相关推荐

【GDB】一文掌握 GDB 详细用法(GDB 命令速查)

GDB(GNU Debugger)是Linux/Unix系统下强大的命令行调试工具,用于分析程序运行时的内存状态、执行流程和故障定位。就会被压入栈中,栈帧包含了该函数的局部变量、参数、返回地址和其他信息,当函数执行完毕后,这个栈帧会被弹出栈并销毁。调用的函数如果存在全局变量、静态变量的修改,在函数返回后会恢复到调用之前的值,这两个调用不会影响程序的状态。显示运行时将要或已经传递给程序的参数。每当一个函数被调用时,一个新的栈帧。在启动进程前,添加环境变量。在启动进程前,清除环境变量。连接到正在运行的进程。

数据知道的博客 1万+

GDB的使用

linux下gdb的用法

weixin_58165485的博客 8043

43、GDB调试工具使用指南

本文详细介绍了GDB调试工具的使用方法,包括GDB的启动与停止、命令行参数和选项的使用、传递参数给被调试程序、选择文件与用户界面、执行命令脚本以及初始化文件的设置。同时,文章还讲解了GDB的基本命令、命令补全功能、帮助信息的获取,以及如何通过info和show命令查看调试器和被调试程序的状态信息。通过具体的示例操作和高级调试技巧,如条件断点、单步调试和变量值查看等内容,帮助开发者更高效地进行程序调试。无论你是初学者还是有经验的开发者,都可以通过本文全面掌握GDB调试工具的核心功能和实用技巧。

table的专栏 169

gdb 使用详细介绍

零、前言 在工作中,无论是学习代码流程还是问题的定位,GDB都显得尤为重要,多掌握一些命令可以提升我们的效率和解决问题的能力; 按照我的理解,对 GDB 的掌握程度可以分为三种人: 基础命令,大家都知道; 相对高阶一点的,少数人了解,掌握之后可以提升调试解决问题的效率; 需要结合反汇编、栈回溯、malloc 内存分配原理和结构、elf 文件结构等知道,配合 GDB 来解决一些内存相关的偶现问题。 一、GDB基础介绍 1.1 简介 gdb 是 GNU 开源组织发布的一个强大的 Linux 下的程

布袋和尚 7478

通达信K线主图指标公式实战:如何用颜色标记快速识别涨停与炸板信号

本文详细介绍了如何利用通达信K线主图指标公式,通过颜色标记快速识别涨停与炸板等关键信号。通过实战拆解公式源码,手把手教您构建直观的“视觉交易系统”,将复杂的K线形态转化为醒目的颜色信号,帮助投资者高效聚焦机会与风险,提升技术分析效率。

weixin_29302047的博客 1760

人工智能-CS188 Project 2: Multi-agents

一、项目介绍 项目介绍网页 项目代码下载 本项目是采用Berkeley的CS188课程内容实习二的内容,在这个项目中,我们将为经典版本的Pacman 设计自动算法,包括幽灵。在此过程中,我们将实现 minimax 和 expectimax 搜索并尝试评估函数设计 完成作业只需要完成5个题目,按照项目介绍的步骤进行完成,主要是在multiAgents.py文件中进行补充代码 二、代码详情 1、Question1:Reflex Agent 略 2、Question2:Minimax 套用ppt上的minm

xiten的博客 8285

GDB基本用法

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

dadaima_sama的博客 4777

倒立摆入门详解+pid调参

倒立摆制作全过程 最近在练习pid的控制算法,就选用了2013年的电子设计国赛题目:倒立摆 。 首先给你们看看我的成果 注意哦:倒立摆不是靠上面黄色的传感器保持平衡的,而是通过下面的电机左右扭动使得摆杆不掉下来,难度可不小了。 材料准备 1.机械部分 如图所示选好电机和角位移传感器进行组装就好了,这个部分是我直接网上购买的,如果要自己装也是可以的,不过会比较麻烦,结构差不多的。 2.主控部分 这个部分的话完全是我自己设计的,作用和网上买的一样,因为网上买的话太贵了,有需要的话可以联系我,有pcb文件

small_po_kid的博客 2万+

linux调试神器GDB(简明使用指南)

本文主要讲的是linux下调试神器gdb的简单使用方式

m0_54069809的博客 1245

利用Ghidra与SVD插件实现STM32固件深度逆向分析

本文详细介绍了如何利用Ghidra逆向工程框架结合SVD插件,实现对STM32固件(.bin文件)的深度逆向分析。通过加载描述芯片外设寄存器的SVD文件,Ghidra能将晦涩的硬件地址操作转换为可读的寄存器符号,极大提升了对嵌入式固件中通信协议、安全校验等关键逻辑的分析效率。文章涵盖了从Java环境搭建、工具配置到实战逆向解析的完整流程。

peach的博客 942

R语言maftools包实战:5分钟搞定TCGA癌症突变数据可视化(附完整代码)

本文详细介绍了如何使用R语言的maftools包快速解析和可视化TCGA癌症突变数据。通过实战演示,从环境搭建、数据导入到核心可视化(如瀑布图、棒棒糖图)和深度统计分析(如生存分析、突变特征),帮助生物信息学研究者高效完成癌症基因组学分析,大幅提升从原始MAF数据到发表级图表的效率。

weixin_29054399的博客 188

GDB调试工具使用指南

GDB(GNU Debugger)是Linux环境下功能强大的调试工具,能够帮助开发者快速定位和解决程序中的问题。选项会在可执行文件中嵌入调试符号,使得GDB能够将机器指令与源代码对应起来。需要注意的是,调试信息会增加可执行文件的大小,但不会影响程序的执行逻辑。通过掌握这些GDB调试技巧,开发者可以更高效地定位和解决程序中的问题。调试是一个需要耐心和经验的过程,熟练使用GDB将大大提升调试效率。选项编译程序,避免优化带来的调试困难。rwatch 变量名。awatch 变量名。thread 线程号。

wz_290793的博客 603

酒店前台pms管理系统

对于酒店经营者来说,选择一款优秀的管理系统,是提升运营效率、优化客人体验的关键。PMS酒店管理系统凭借其强大的房态管理、实时数据监控、OTA直联、无人值守等功能,已经成为许多酒店提升管理水平的得力助手。无论是大中型酒店,还是小型民宿,PMS系统都能根据不同需求提供量身定制的解决方案,帮助酒店实现精细化管理、提高运营效率。如果你也在为酒店管理中的繁琐琐事而困扰,不妨尝试一下PMS酒店管理系统,感受科技带来的便利与高效,让你的酒店运营更上一层楼!

2409_89897808的博客 2484

GDB使用指南

       GDB(GNU DeBugger)是GNU的调试器,一般和GCC(GNU Compiler Collection)配搭使用。要使用GDB进行调试,编译程序时要指定-g或-ggdb的编译选项。如:gcc –g main.cgcc –ggdb main.c这样,gcc就会在生成可执行文件时产生调试讯息。-g用于产生一般的调试讯息,-ggdb则用于产生GDB特有的调试讯息。

ma811的专栏 2975

RV1126平台JD9366触摸屏驱动移植实战:从源码到烧录的完整指南

本文详细介绍了在RV1126平台上移植JD9366触摸屏驱动的完整流程,从环境准备、源码获取到驱动配置、内核编译、设备树设置以及固件烧录与测试验证。通过实战经验分享和常见问题排查,帮助开发者高效完成触摸屏驱动移植,适用于嵌入式Linux开发场景。

weixin_30872337的博客 409

熵编码(五)-CABAC(一) 基础篇

前两篇算术编码文章介绍了算术编码原理和步骤。本篇文章介绍CABAC,基于上下文自适应的二进制算术编码。本文对CABAC的基本原理进行了详细的介绍和分析,下篇文章将会对H264编码中的CABAC熵编码的实际应用进行介绍。

尹佑壮的博客 3880

gdb入门-GDB使用指南

       GDB(GNU DeBugger)是GNU的调试器,一般和GCC(GNU Compiler Collection)配搭使用。要使用GDB进行调试,编译程序时要指定-g或-ggdb的编译选项。如:gcc –g main.cgcc –ggdb main.c这样,gcc就会在生成可执行文件时产生调试讯息。-g用于产生一般的调试讯息,-ggdb则用于产生GDB特有的调试讯息。使用-ggdb时

zdfonline的专栏 6331

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

gdb x命令_GDB简易使用指南

GDB简介GNU调试器(GNU Debugger,简称GDB)是一款GNU软件系统中的标准调试器,现有GDB所能支持调试的编程语言有C、C++、Pascal以及FORTRAN。GDB具有极好的移携性,经过多个版本的调修与重新编译,如今许多的类UNIX操作系统上都可以使用GDB。GDB官网:GDB: The GNU Project Debugger​www.gnu.orgGDB和LLDB GNU调试...

weixin_39812142的博客 910

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

GDB使用指南1

发信人: TJB (老六), 信区: Linux  标  题: GDB (1)  发信站: BBS 水木调试站 (Tue Jun  2 15:54:19 1998)    发 信 人:System_Killer(大家一起来发呆)           信区名称:Linux[4590]  信件提要:GDB(一)  原发信站:中国科大BBS站(Fri, 27 Mar 1998 02:31:49)   

小唐学习日志 514

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

gdb continue后如何暂停_GDB简易使用指南

GDB简介GNU调试器(GNU Debugger,简称GDB)是一款GNU软件系统中的标准调试器,现有GDB所能支持调试的编程语言有C、C++、Pascal以及FORTRAN。GDB具有极好的移携性,经过多个版本的调修与重新编译,如今许多的类UNIX操作系统上都可以使用GDB。GDB官网:GDB: The GNU Project Debugger​www.gnu.orgGDB和LLDB GNU调试...

weixin_36087577的博客 4452

Linux 调试器 GDB 使用指南

GDB(GNU Debugger)是GNU项目开发的一个功能强大的调试工具,常用于调试C/C++等编译型语言。启动一个程序并指定其运行环境在代码中设置断点,暂停程序的执行逐行跟踪程序的执行检查和修改程序的变量和内存调试崩溃的程序(例如通过分析core dump文件)GDB是一款命令行工具,但也可以和许多IDE集成,如Eclipse、VSCode等,提供图形化的调试界面。GDB 是 Linux 系统中功能强大的调试工具,适合用来调试 C/C++ 等程序语言。

方歧的博客 1815

GDB 使用指南

debug 神器

lyndon 601

gdb使用指南

用GDB调试程序来源:www.trucy.org (2005-03-23 16:48:14)GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。于是UNIX下的软件比Windo

kkpeng的专栏 746

GDB中thread apply all命令使用指南

命令示例作用打印所有线程的堆栈打印所有线程中变量x的值显示所有线程的局部变量安静模式(减少冗余输出)通过,你可以高效分析多线程程序的全局状态,大幅提升调试效率!在GDB(GNU调试器)中,命令用于将一个命令应用到所有线程上。这个命令非常有用,尤其是当你需要同时查看所有线程的状态(如堆栈跟踪)或者对所有线程执行某个操作时。是一个强大的命令,可以帮助你同时管理或查看多个线程的状态。在调试多线程程序时,这个命令能极大地提高效率。好的,我们来详细解释一下命令在 GDB 中输出的信息。

我的博客 1303

GDB调试使用指南

GDB调试使用指南如何使用GDB调试1. 首先使用GDB绑定进程2. 设断点3. 使用c命令让进程运行4. 启动程序5. 调试程序调试命令整理 如何使用GDB调试 下面是从无到有使用GDB的一个过程: 1. 首先使用GDB绑定进程 // 查看进程 root@C650-253:/root> ps -a PID TTY TIME CMD 583 ttyS0 00:00:00 login 595 ttyS0 00:00:00 sh 687 ttyS0 0

qq_43688952的博客 498
上一篇: Float类型的有效位数有几位
下一篇: SSH免密登陆的原理与应用
Linux在秋名山
博客等级 码龄9年 225粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux在秋名山

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值