我不知道这是否是一个广泛的问题,但我很难找到参数矢量字符串。这是我的GDB输出。
(gdb) run test
Starting program: /root/Desktop/booksrc/a.out test
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000
Breakpoint 1, main (argc=2, argv=0x7fffffffe468) at convert2.c:14
14 count = atoi(argv[2]); // convert the 2nd arg into an integer
(gdb) x/3xw 0x7fffffffe468
0x7fffffffe468: 0xffffe6d2 0x00007fff 0xffffe6ee
(gdb) x/3xw 0xffffe6d2
0xffffe6d2: Cannot access memory at address 0xffffe6d2
(gdb) x/3xw 0x00007fff
0x7fff: Cannot access memory at address 0x7fff
那么我的第一个参数应该是什么,/root/Desktop/booksrc/a.out
是无法访问的,以及测试参数。是什么给了什么?
答案 0 :(得分:0)
您必须在命令中使用g
而不是w
。 g
代表"巨人"或8字节,因为你在64位机器上,而不是x/3xw
你想要x/3xg
,你会得到这样的东西:
(gdb) x/3xg 0x7fff5fbff900
0x7fff5fbff900: 0x00007fff5fbffa38 0x00007fff5fbffa6a
0x7fff5fbff910: 0x0000000000000000
然后x/s 0x00007fff5fbffa38
您将看到argv参数,它是您的程序的路径,第二个0x00007fff5fbffa6a
将是" test"。