../sysdeps/i386/i686/multiarch/strcpy.c: нет такого файла или каталога - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь отладить программу с помощью gdb, и когда я устанавливаю точку останова и продолжаю выполнять функцию strcpy(). Я получаю следующий ответ:

frinto@kali:~/Documents/theclang/programs/helloworld$ gcc -fno-builtin -m32 -g -o char_array char_array.c 
frinto@kali:~/Documents/theclang/programs/helloworld$ ls
a.out  char_array  char_array.c  firstprog.c  helloworld.c
frinto@kali:~/Documents/theclang/programs/helloworld$ ./char_array 
Hello, world!
frinto@kali:~/Documents/theclang/programs/helloworld$ gdb -q char_array
Reading symbols from char_array...done.
(gdb) list
1   #include <stdio.h>
2   #include <string.h>
3   
4       int main() {
5           char str_a[20];
6   
7           strcpy(str_a, "Hello, world!\n");
8           printf(str_a);
9       }
(gdb) break 6
Breakpoint 1 at 0x11c6: file char_array.c, line 6.
(gdb) break strcpy
Breakpoint 2 at 0x1040
(gdb) break 8
Breakpoint 3 at 0x11dc: file char_array.c, line 8.
(gdb) run
Starting program: /home/frinto/Documents/theclang/programs/helloworld/char_array 

Breakpoint 1, main () at char_array.c:7
7           strcpy(str_a, "Hello, world!\n");
(gdb) cont
Continuing.

Breakpoint 2, strcpy_ifunc () at ../sysdeps/i386/i686/multiarch/strcpy.c:29
29  ../sysdeps/i386/i686/multiarch/strcpy.c: No such file or directory.
(gdb) 

Я на Кали 2.0 и установил: libc6-dbg и libc6-dbg:i386

Если это уже не очевидно, я хочу избавиться от этого сообщения об ошибке:

../sysdeps/i386/i686/multiarch/strcpy.c: No such file or directory

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 21 января 2019

Я хочу избавиться от этого сообщения об ошибке:

Это не ошибка.GDB сообщает вам, что вы остановились в функции strcpy_ifunc (см. в этом описании того, что IFUNC s), которая определена в ../sysdeps/i386/i686/multiarch/strcpy.c исходном файле, и что GDB не знаеткак найти этот файл в файловой системе (и, следовательно, не может показать вам источник strcpy_ifunc).

Лучший способ исправить это - сообщить GDB, где найти этот источник.См. (gdb) help directory.

Конечно, чтобы это работало, вам действительно нужны источники GLIBC.Я не знаю, упаковывает ли Kali исходники в libc6-dbg:i386 или нет, возможно, вам придется установить отдельный пакет glibc-source.

...