GDB查看内存、函数栈、寄存器

转载 2018年04月14日 22:45:39

gdb查看指定地址的内存地址的值:examine 简写 x-----

使用$gdb> help x 来查看使用方式


     $x/ (n,f,u为可选参数)


n: 需要显示的内存单元个数,也就是从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义


f:显示格式
               x(hex) 按十六进制格式显示变量。
               d(decimal) 按十进制格式显示变量。
               u(unsigned decimal) 按十进制格式显示无符号整型。
               o(octal) 按八进制格式显示变量。
               t(binary) 按二进制格式显示变量。
               a(address) 按十六进制格式显示变量。
               c(char) 按字符格式显示变量。

               f(float) 按浮点数格式显示变量


u:每个单元的大小,按字节数来计算。默认是4 bytes。GDB会从指定内存地址开始读取指定字节,并把其当作一个值取出来,并使用格式f来显示
               b:1 byte     h:2 bytes     w:4 bytes g:8 bytes
     比如x/3uh 0x54320表示从内存地址0x54320读取内容,h表示以双字节为单位,3表示输出3个单位,u表示按照十六进制显示。

    

    from http://www.cnblogs.com/super119/archive/2011/03/26/1996125.html



gdb打印表达式的值:print/f 表达式


f是输出的格式,x/d/u/o/t/a/c/f


表达式可以是当前程序的const常量,变量,函数等内容,但是GDB不能使用程序中所定义的宏


查看当前程序栈的内容: $x/10x $sp-->打印stack的前10个元素

查看当前程序栈的信息: $info frame----list general info about the frame

查看当前程序栈的参数: $info args---lists arguments to the function

查看当前程序栈的局部变量: $info locals---list variables stored in the frame

查看当前寄存器的值:$info registers(不包括浮点寄存器) info all-registers(包括浮点寄存器)

查看当前栈帧中的异常处理器:$info catch(exception handlers)


from http://blog.chinaunix.net/uid-29062294-id-4255572.html

GDB寄存器和内存

分类: 1. 查看寄存器 (gdb) i r (gdb) i r a                     # 查看所有寄存器(包括浮点、多媒体) (gdb) i r esp (...
  • ll352071639
  • ll352071639
  • 2014-12-31 23:32:11
  • 3754

gdb查看内存区和寄存器i

一、用gdb查看内存 格式: x /nfu 说明 x 是 examine 的缩写 n表示要显示的内存单元的个数 f表示显示方式, 可取如下值 x 按十六进制格式显示变量。 d 按十进制格式显示变量。 ...
  • chunlovenan
  • chunlovenan
  • 2015-05-20 09:45:34
  • 2802

gdb调试秘籍(寄存器、栈)

GDB的常用调试命令大家可以查阅gdb手册就可以快速的上手了,在这儿就不给大家分享了,需要的可以到GDB的官网去下载手册。这里重点分享下GDB调试中的一些寄存器和栈的相关知识用于解决下列gdb调试时的...
  • Jogger_Ling
  • Jogger_Ling
  • 2017-03-21 16:13:49
  • 2015

gdb栈布局

http://blog.chinaunix.net/uid-16459552-id-3328601.html​谈x86的栈帧之前,补充一下堆和栈的认识。 1.  堆和栈的关系     我们...
  • SprintfWater
  • SprintfWater
  • 2014-11-03 21:31:44
  • 1166

gdb查看内存地址和栈中的值

gdb查看指定地址的内存地址的值:examine 简写 x-----使用gdb> help x 来查看使用方式     x/ (n,f,u为可选参数)n: 需要显示的内存单元个数,也就是从当前地址向后...
  • mergerly
  • mergerly
  • 2014-11-18 17:45:53
  • 2953

Linux 下函数栈帧分析

1、关于栈对于程序,编译器会对其分配一段内存,在逻辑上可以分为代码段,数据段,堆,栈 代码段:保存程序文本,指令指针EIP就是指向代码段,可读可执行不可写 数据段:保存初始化的全局变量和静态变量,可读...
  • xy010902100449
  • xy010902100449
  • 2016-05-11 16:51:37
  • 4222

gdb调试时打印寄存器的不同类型值

在对程序gdb调试时,如果需要深入到某个函数的栈帧进行调试时,一般需要显示rbp/ebp、rsp/esp、pc等寄存器的值,或者显示以rsp/esp为参照地址计算出来的其他变量的值。如下所示:(gdb...
  • u012421852
  • u012421852
  • 2016-07-03 01:22:13
  • 1786

gdb修改寄存器值进行调试

gdb 寄存器 调试 返回值
  • kabar_strider
  • kabar_strider
  • 2010-10-19 17:25:00
  • 8113

gdb中查看内存方法总结

出自计组第三次上机附加题第二题 用gdb运行程序b,输出中相应地址究竟指向了什么? 请贴上你是如何找到的(使用了什么gdb指令等等) 在查看地址前首先需要断点定位到需要查看的...
  • angus_monroe
  • angus_monroe
  • 2017-11-12 22:34:10
  • 365

GDB查看栈信息

栈:是程序存放数据内存区域之一,特点是LIFO(后进先出)。 PUSH:入栈 POP:出战 使用场景: 1.保存动态分配的自动变量使用栈 2.函数调用时,用栈传递函数参数,半寸返回地...
  • unix21
  • unix21
  • 2012-12-29 12:53:44
  • 11277
收藏助手
不良信息举报
您举报文章:GDB查看内存、函数栈、寄存器
举报原因:
原因补充:

(最多只允许输入30个字)