【发布时间】:2013-12-13 07:05:27
【问题描述】:
我不知道为什么我看不到这个回溯。加载了我自己的二进制文件中的符号,并安装了包libc6-dbg。我需要告诉 gdb 在哪里可以找到 libc 符号吗?
Program received signal SIGSEGV, Segmentation fault.
__memcpy_ia32 () at ../sysdeps/i386/i686/multiarch/../memcpy.S:74
74 ../sysdeps/i386/i686/multiarch/../memcpy.S: No such file or directory.
(gdb) bt full
#0 __memcpy_ia32 () at ../sysdeps/i386/i686/multiarch/../memcpy.S:74
No locals.
#1 0x00000000 in ?? ()
No symbol table info available.
(gdb)
【问题讨论】:
-
很奇怪你没有正确的回溯,你是用“-g -O0”选项构建的吗?会不会是堆栈损坏覆盖了返回地址?
-
@jcm -O0 会影响它吗?
-
构建器可能正在通过从二进制文件中修剪调试信息来优化您的应用程序。
-O0禁用优化并避免这种可能性。另一方面,从回溯中的行数来看,我敢打赌堆栈损坏。我会尝试添加一个答案来帮助解决这个问题。