Я не знаю, является ли это широким вопросом или нет, но мне сложно найти строки векторов аргументов. Вот мой вывод GDB.Intel Assembly не может найти адрес Argv
(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
недостижим, а также тест аргумент. Что дает?
Вы находитесь в режиме 64 бит, ваши указатели 64 бит. В любом случае вы можете просто «p argv [2]» и забыть об этой детали. – Jester
Источник, который я читаю, использует 32 бит. Однако почему адреса недоступны? Это вопрос форматирования? – WhiteMask
Недостаток, потому что вы использовали только низкую половину из них. Если вы хотите играть в 32-битном режиме, скомпилируйте с помощью 'gcc -m32'. – Jester