gdb 使用

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

1.计算一个结构体成员offset

p/x &((struct A *)0)->b 其中A表示结构体,b是成员

2.输入被调试程序输入参数:

r -sysdir /home/skyeye/android_test -system initrd_96M.img -data userdata.img -ramdisk  ramdisk.img -kernel zImage -show-kernel -verbose

3.breakpoint

 b cpu_arm_exec or

(gdb) b  *0x40000000
Breakpoint 3 at 0x40000000

查看断点信息:

(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000057bf50 in qemu_cpu_exec at /home/skyeye/s2e/s2e/qemu_android/cpus.c:562
    breakpoint already hit 2 times
2       breakpoint     keep y   0x0000000000513bb0 in cpu_arm_exec at /home/skyeye/s2e/s2e/qemu_android/cpu-exec.c:248
    breakpoint already hit 1 time
3       breakpoint     keep y   0x0000000040000000

4.查看某个变量

(gdb)  p/x *(struct CPUARMState *)0x0x1d9a010


5.查看某个地址的值:

(gdb) x/20i 0x40000000

6.查看寄存器

(gdb) info  registers 

7.查看变量类型:

(gdb) ptype env

(gdb) whatis env

8.查找变量:

(gdb) info variables env (查找env变量,可以着正则式);info variables查看所以变量。类似的查看函数,info functions 以及info  functions REX

9.查看类型定义:

(gdb) info types env 使用方法跟上面类似

10.signals :

info  signals

handle signal keywords...
Change the way GDB handles signal signal. signalcan be the number of a signal or its name (with or without the`SIG' at the beginning); a list of signal numbers of the form`low-high'; or the word `all', meaning all theknown signals. The keywords say what change to make.

The keywords allowed by the handle command can be abbreviated.Their full names are:

nostop
GDB should not stop your program when this signal happens. It maystill print a message telling you that the signal has come in.

stop
GDB should stop your program when this signal happens. This impliesthe print keyword as well.

print
GDB should print a message when this signal happens.

noprint
GDB should not mention the occurrence of the signal at all. Thisimplies the nostop keyword as well.

pass

noignore
GDB should allow your program to see this signal; your programcan handle the signal, or else it may terminate if the signal is fataland not handled.pass and noignore are synonyms.

nopass

ignore

GDB should not allow your program to see this signal.nopass and ignore are synonyms.

core dump:

If you can enable core dumps on that system, just run the program, let it crash, then pull the core dump off the target machine onto your development machine and load it into a GDB built to debug the target architecture - that should tell you exactly where the crash occurred. Just use GDB's core command to load the core file into the debugger.

  • To enable core dumps on the target:

    ulimit -c unlimited
  • pseudo-files that control how the core file will be named (cat these to see the current configuration, write to them to change the configuration):

    /proc/sys/kernel/core_pattern
    /proc/sys/kernel/core_uses_pid

On my system, once core dumps are enabled, a crashing program will write a file simply named "core" in the working directory. That's probably good enough for your purposes, but changing how the core dump file is named lets you keep a history of core dumps if that's necessary (maybe for a more intermittent problem).



gdb 教程 GDB 学习记录 阅读详情

相关推荐

深入解析gdb -p 与gdb attach 的区别与使用场景

在Linux系统中,GDB(GNU Debugger)是一款功能强大的调试工具,广泛应用于程序开发和调试过程。在使用GDB进行调试时,我们常常需要将GDB附加到正在运行的进程上。本文将对比两种附加进程的方法:gdb -p 和gdb attach ,分析它们的区别和使用场景。本文详细对比了gdb -p 与gdb attach 的使用方法、场景及优缺点。摘要:本文将详细对比gdb -p 与gdb attach 这两个命令的使用方法、场景及优缺点,帮助读者更好地理解并运用这两个调试工具。

scoone的博客 2239

GDB 使用 (六)查看运行时数据

 查看运行时数据     在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是: print print /  是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),是输出的格式,比如,如果要把表达式按16进制的格式输出,那么就是/x。  一

1905

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

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

数据知道的博客 1万+

GDB调试--以汇编语言为例

#rpm -qa |grep  gdb 下载: 安装 #tar -zxvf #./configure #make 使用GDB 以汇编语言调试为例 汇编语言实现CPUID指令 CPUID cpuid是Intel  Pentinum以上级CPU内置的一个指令(486级以下的CPU不支持),他用于识别某一类型的CPU, 它能返回CPU级别,型号,CPU步进以及CPU字

编程的本质是数学问题 5398

【GDB】——用 python 扩展 gdb

gdb.parse_and_eval 接受一个字符串作为表达式,并以 gdb.Value 的形式返回表达式求值的结果。那么 gdb.parse_and_eval(‘i + 1’) 的结果是一个 gdb.Value 的实例,其 value 属性的值为 4。如果想把输出结果转存到字符串中,设置 to_string 为 True:gdb.execute(cmd, to_string=True)。当我们通过 python 接口跟这些值打交道时,gdb 会把它们包装成一个 gdb.Value 对象。

tyustli 1989

高通SA8155P车载Camera开发避坑指南:从硬件拓扑到AIS服务调试全流程

本文详细解析了高通SA8155P车载Camera开发全流程,从硬件拓扑设计到AIS(Automotive Imaging System)服务调试,涵盖关键组件配置、软件架构剖析及高级调试技巧。通过实战经验分享,帮助开发者避开常见陷阱,优化系统性能,适用于智能驾驶系统的环境感知开发。

weixin_42550597的博客 331

GDB用法(一)

/ F为前面显示变量中的格式(x, d, u, o, t, a, c, f, s, i)后面加次数是指定次数忽略断点, c 5则5次遇到断点不停止, 第6次遇到断点时才暂停执行。watch [options] // 表达式发生变化时暂停运行。跳过了参数0, 参数1,参数2, 3次断点, 第4次断点时暂停执行。在运行时, 进入断点后, 使用偏移量, 对断点行号加/减多少行。awatch // 表达式被访问, 改变时暂停运行。rwatch // 表达式被访问时暂停运行。

zbbzb的博客 403

实战指南 | 快速修复Adobe Acrobat 2020安装过程中的常见注册表错误

本文提供了Adobe Acrobat 2020安装过程中遇到“无法打开键”注册表错误的详细修复指南。通过安全编辑注册表,精准定位并删除残留键值,可快速解决此常见安装报错,确保软件顺利安装。同时,文章也介绍了其他安装问题的应对策略与预防措施。

weixin_29200485的博客 560

GDB十分钟教程

GDB十分钟教程作者: liigo原文链接: http://blog.youkuaiyun.com/liigo/archive/2006/01/17/582231.aspx日期: 2006年1月16日本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试

Liigo's blog 40万+

VulnHub--mrrobot

Vulnhub靶场--Mr robot 靶机

记录笔记 1095

从气象预报到物流规划:多尺度地理加权回归(MGWR)在ArcGIS Pro中的实战应用

本文深入探讨了多尺度地理加权回归(MGWR)在ArcGIS Pro中的实战应用。通过对比传统GWR模型,MGWR的核心优势在于能识别不同解释变量的独特空间作用尺度,有效解决空间异质性问题。文章结合气象预报误差修正与物流网点选址两个案例,详细讲解了从数据准备、参数设置、带宽优化到结果解读的全流程,为地理数据分析师处理复杂空间数据提供了强大工具。

egg99的博客 1030

gdb x命令_Coresight及GDB使用介绍 - 大海在倾听

参考博文:和https://www.sohu.com/a/130338404_5058031 CoresightWHY:为什么需要首先从命名上,可以知之一二:就是看看core在干嘛呗!当然这只是小编的口语。根据ARM的官方,CoreSight主要实现两个功能:Debug和Trace。对于搞嵌入式的工程师而言并不陌生,也就是对于内核的调试和跟踪功能。在早期可以通过片外仪器来测量处理器调试过程中的数据...

weixin_39963744的博客 897

【视频讲解】Python量子计算聚类Q-means:量子k-means算法分析电路数据实现可视化...

全文链接:https://tecdat.cn/?p=37821分析师:Yifan Zhang量子计算在近期已然成为一个频繁出现的热门概念。尽管它在大众认知以及互联网社区中备受瞩目,热度极高,然而就其实际能力而言,当前仍然存在诸多局限(点击文末“阅读原文”获取完整代码数据)。量子计算作为一个全新的领域,带来了相较于传统经典计算模式的重大范式转变。在量子计算的体系中,传统的 0 或 1 的经典比特被一...

拓端研究室TRL 1456

【Linux】GDB保姆级调试指南(什么是GDB?GDB如何使用?)

GDB是Linux下非常好用且强大的调试工具。GDB可以调试C、C++、Go、java、 objective-c、PHP等语言。对于以后想称为一个Linux下工作的c/c++程序员,GDB是必不可少的工具,所以本篇来从零讲解GDB在LInux的调试。 对于GDB调试器来说,不像VS编译器中那样的图形化界面形式,而是采用纯命令行的形式进行调试。so 在开始学习的时候,大家可能会感觉晦涩难懂,但是这是C/C++程序员必须要掌握的技能,所以我将手把手进行零基础的讲解,本篇以C语言来讲解和调试。

weixin_45031801的博客 13万+

Ansys Zemax实战:5步搞定衍射光学元件(DOE)设计,附赠超透镜(metalens)避坑指南

本文详细介绍了使用Ansys Zemax进行衍射光学元件(DOE)和超透镜(metalens)设计的5步实战流程。从基础光学系统搭建到相位面设计验证,再到制造准备与实测对比,全面解析了OpticStudio中的关键技巧和常见避坑指南,帮助工程师高效完成复杂光学元件设计。

orange的博客 618

国科大学习资料--矩阵论(叶世伟)-期末考试题整理3

国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3

无名何许人的博客 1402

GDB的使用

linux下gdb的用法

weixin_58165485的博客 8043

使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号

使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号。在这个示例中,我们选择了一个位于加利福尼亚州旧金山市附近的点,其经度为-122.084,纬度为37.421998。首先,我们需要导入必要的库和模块。接下来,我们定义一个函数,该函数将接收经度和纬度作为输入,并返回对应的Landsat路径/行号。最后,我们提取路径和行号的值,并将它们作为结果返回。现在,我们可以使用这个函数来获取特定点的Landsat路径/行号。

VwajAlgorithm的博客 348

gdb的使用

进入gdb;list/l 行号;r;break/b 行号;info break;delete breakpoints;disable breakpoints 和enable breakpoints;n或next等

m0_73372323的博客 3316

Camera2Demo

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

GDB使用教程

1、GDB介绍 2、debug和release的区别(参考) 3、基本使用hello world(参考) 4、GDB调试命令总结(参考) 5、在cmake中使用GDB 1、GDB介绍 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比...

蓬莱道人的博客 8283

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何使用GDB调试

文章目录一、GDB的介绍二、GDB的使用三、使用GDB调试实际例子 一、GDB的介绍 GDB(全称:GNU Debugger)是GNU工程为GNU操作系统开发的调试器。它可以用于调试C、C++、Objective-C、Pascal、Ada等语言编写的程序。 二、GDB的使用 GDB的使用条件 程序要用GDB调试,需要添加调试信息。 添加方法: gcc的-g选项为程序添加调试信息。 例如:gcc –g –o helloworld helloworld.c 启动GDB 启动方法: gdb [程序名称

Harriet的博客 6555

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

linux GDB and GDB Sever

GDB(GNU Debugger)是一个用于调试程序的强大工具。它是GNU项目的一部分,支持多种编程语言,包括C、C++等。GDB 提供了一组命令和功能,允许跟踪检查程序的内部状态,跟踪代码的执行过程,以及定位和修复程序中的错误。:set follow-fork-mode parent 是 GDB 的一个命令,用于在多进程调试时控制在 fork() 调用之后 GDB 应该跟踪哪个进程。问题出在:函数accessInvalidMemory,代码的第五行。前面是单子进程的调试。

weixin_42271802的博客 1574

【调试】GDB使用总结

bt fullbt full Nbt full -N用define可以自定义命令,用document可以给自定义的命令加说明,利用help 命令名可以查看定义的命令。define 命令名命令…………enddocument 命令名说明endhelp 命令名以下示例定义了名为li的命令。本文只是对gdb命令脚本做了一个粗浅的介绍,旨在起到抛砖引玉的效果。

嵌入式与Linux那些事的博客 4335

使用gdb调试Python程序

前言不知各位有木有遇到这样的情况,生产环境下的Python进程突然卡死了,所有其他线程都无法调度,如果我们kill掉重启,通常会丧失掉当前报错的上下文信息,失去这些信息,对后续报错定位不太友好,能不能在不关停Python程序的情况下,看看程序发生了什么问题?首先,你可以尝试一下,此前我提过的py-spy(漫画:如何分析运行中的 Python 程序?),py-spy可以打印...

weixin_30230009的博客 1万+

gdb 入门使用

官方文档 http://sourceware.org/gdb/current/onlinedocs/gdb/ 确定文件是否可以gdb调试 gdb 直接调试查看 没有调试信息 not gdb.png readelf 查看段信息 file命令查看strip 如果最后是stripped,则说明该文件的符号表信息和调试信息已被去除,不能使用gdb调试。但是not stripped的情况并不能说明能够被调试。 使用GDB调试 编译时使用-g编译选项 $ g..

择一事终一生 1147
上一篇: qemu内存访问分析
下一篇: qemu 安装CentOS
Xalloc
博客等级 码龄16年 25粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值