
Nachdem ich diesen Thread gelesen habe, war mir klar was der Fehler ist, aber ich bin mit meinem falschen Ergebnis nicht ganz zufrieden ^^
Folgender Beispielcode:
Code: Alles auswählen
#include <stdio.h>
int main( int argc, char *argv[] )
{
int x = 0x12345678;
int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
int z = 0x12345678;
printf( "%p - %p\n", &(array[0]), &(array[9]) );
return 0;
}
Code: Alles auswählen
$ gcc -o test main.c -g
Code: Alles auswählen
$ gdb -q ./test
Reading symbols from /home/daniel/proggen/test...done.
(gdb) break main
Breakpoint 1 at 0x400507: file main.c, line 5.
(gdb) run test-parameter
Starting program: /home/daniel/proggen/test test-parameter
Breakpoint 1, main (argc=2, argv=0x7fffffffe178, envp=0x7fffffffe190) at main.c:5
5 int x = 0x12345678;
(gdb) nexti
6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x0000000000400515 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x000000000040051c 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x0000000000400523 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x000000000040052a 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x0000000000400531 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x0000000000400538 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x000000000040053f 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x0000000000400546 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
0x000000000040054d 6 int array[] = { 9, 8, 5, 6, 7, 0, 1, 4, 3, 2 };
(gdb) nexti
7 int z = 0x12345678;
(gdb) nexti
8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x0000000000400560 8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x0000000000400564 8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x0000000000400568 8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x000000000040056c 8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x000000000040056f 8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x0000000000400572 8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x0000000000400577 8 printf( "%p - %p\n", &(array[0]), &(array[9]) );
(gdb) nexti
0x7fffffffe060 - 0x7fffffffe084
9 return 0;
(gdb) x/20x 0x7fffffffe060-24
0x7fffffffe048: 0xffffe190 0x00007fff 0xffffe178 0x00007fff
0x7fffffffe058: 0x004005d5 0x00000002 0x00000009 0x00000008
0x7fffffffe068: 0x00000005 0x00000006 0x00000007 0x00000000
0x7fffffffe078: 0x00000001 0x00000004 0x00000003 0x00000002
0x7fffffffe088: 0x12345678 0x12345678 0x00000000 0x00000000
(gdb) x/s 0x004005d5
0x4005d5 <__libc_csu_init+69>: "H\205\355t\034\061\333\017\037@"