View memory content with gdb
Mahmood Naderan via gdb
gdb@sourceware.org
Thu Jul 5 08:27:00 GMT 2018
>No it doesn't. Stack grows downward when you extend it — by reserving
>bytes or by `push`ing onto it. But after you've reserved the space in
>it, further addressing of that space is via positive offsets to $rsp.
Agreed... I can now see that 61H is inserted into those locations
(gdb) info registers rsp
rsp 0x7fffffffde50 0x7fffffffde50
(gdb) x/8x 0x7fffffffde50
0x7fffffffde50: 0xffffdf58 0x00007fff 0x55554580 0x00000002
0x7fffffffde60: 0xffffdf50 0x00007fff 0x00000000 0x00000000
(gdb) next
7 return 0;
(gdb) x/10x 0x7fffffffde50
0x7fffffffde50: 0xffffdf58 0x00007fff 0x55554580 0x00000002
0x7fffffffde60: 0xffffdf50 0x61617fff 0x61616161 0x61616161
0x7fffffffde70: 0x55554600 0x00005555
I wonder why it didn't insert 61H starting from 0x7fffffffde50?
>You've set two breakpoints: first at `#include <stdio.h>`, and second>at `int main( int argc, char **argv )`, which are the lines 1 and 3 of
>your current source file, respectively.
But what I did seems to be correct!
Please see that although I set "break 1" and then "run", the program stops at strcpy line (line 6). That means it didn't set the breakpoint at the include line.
(gdb) break 1
Breakpoint 1 at 0x6bf: file mico.c, line 1.
(gdb) run aaaaaaaaa
Starting program: /home/mahmood/mico aaaaaaaaa
Breakpoint 1, main (argc=2, argv=0x7fffffffdf58) at mico.c:6
6 strcpy( buffer, argv[ 1 ] );
(gdb) p argv[1]
$1 = 0x7fffffffe302 "aaaaaaaaa"
Regards,
Mahmood
More information about the Gdb
mailing list