我不知道为什么我看不到这个回溯。加载了我自己的二进制文件中的符号,并安装了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)
最佳答案
从回溯来看,可能是堆栈损坏覆盖了您的返回地址(主要是因为只有两个调用,并且没有有关调用memcpy的代码的信息)。您是否可能在堆栈中的某个地址上使用memcpy
?
检查这种损坏的一种方法是使用watch
gdb命令:
watch 0xXXXXXX
如果返回地址被覆盖,则db应该在破坏调用时停止。
关于gdb - memcpy backtrace没有可用的符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20560906/