我正在尝试使用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)
我正在使用Kali 2.0,并且已安装:
libc6-dbg
和libc6-dbg:i386
如果还不是很明显,我想摆脱此错误消息:
../sysdeps/i386/i686/multiarch/strcpy.c: No such file or directory
在此先感谢您的帮助!
答案 0 :(得分:1)
我要摆脱此错误消息:
这不是错误。 GDB告诉您已停止在strcpy_ifunc
源文件中定义的IFUNC
函数(请参阅../sysdeps/i386/i686/multiarch/strcpy.c
是this description),而GDB则没有不知道如何在文件系统上找到该文件(因此无法向您显示strcpy_ifunc
的来源)。
解决此问题的最佳方法是告诉GDB在哪里可以找到此源。参见(gdb) help directory
。
当然要执行此操作,您实际上需要GLIBC来源。我不知道Kali
是否将源代码打包到libc6-dbg:i386
中,您可能必须安装单独的glibc-source
软件包。