一:首先使用gdb+要调试的可执行程序,然后下断点,r
二:使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下:
x/<n/f/u> n、f、u是可选的参数,表示一个内存地址
- n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个单位的内容
- f 表示显示的格式(f可选值)
- x 按十六进制格式显示变量。
- d 按十进制格式显示变量。
- u 按十六进制格式显示无符号整型。
- o 按八进制格式显示变量。
- t 按二进制格式显示变量。
- a 按十六进制格式显示变量。
- c 按字符格式显示变量。
- f 按浮点数格式显示变量。
- u 表示每个单位长度,默认为4字节(u可选值)
- b 表示单字节
- h 表示双字节
- w 表示四字 节
- g 表示八字节
三:如下,可以查看变量a及数组arr的内存内容
x/1dw &a:表示以该地址开始,每个单位4字节,朝后看1个单位(4字节)的内存内容。
x/2dh &a:表示以该地址开始,每个单位2字节,朝后看2个单位(4字节)的内存内容。
与上面意思相同。
四:使用p或者set指令可以改变内存内容
方式一:在对应位置下断点,输入 p g(变量名)=10 可以将g值改为10
方式二:set var g=10