Gdb memcpy回溯无可用符号
我不知道为什么我看不到这个回溯。从我自己的二进制文件中加载符号,并安装包Gdb memcpy回溯无可用符号,gdb,libc,Gdb,Libc,我不知道为什么我看不到这个回溯。从我自己的二进制文件中加载符号,并安装包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
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命令:
watch0xxxxxxx
如果返回地址被覆盖,db应该在破坏呼叫时停止。很奇怪,您没有正确的回溯跟踪,您是否使用“-g-O0”选项构建?是否是堆栈损坏正在覆盖返回地址?@jcm会-O0影响它?可能是生成器通过从二进制文件中修剪调试信息来优化应用程序<代码>-O0禁用优化并避免这种可能性。另一方面,根据回溯中的行数,我打赌堆栈会损坏。我将尝试添加一个答案,试图在这方面提供帮助。