我不知道为什么我看不到这种回溯.加载我自己的二进制文件中的符号,然后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)
Run Code Online (Sandbox Code Playgroud)
从您的回溯来看,您的堆栈损坏可能会覆盖您的返回地址(主要是因为只有两个调用,并且没有有关调用 memcpy 的代码的信息可用)。您是否有可能使用memcpy堆栈中的地址?
检查此类损坏的一种方法是使用watchgdb 命令:
watch 0xXXXXXX如果返回地址被覆盖,数据库应该在损坏的调用上停止。