Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gdb memcpy回溯无可用符号_Gdb_Libc - Fatal编程技术网

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命令:

  • 最重要的部分是划分应该被破坏的调用。在你的情况下,应该打电话给memcpy或接近memcpy
  • 一旦你有了一个可疑的函数,在它上面添加一个断点
  • 运行直到达到断点
  • 通过以下方式将观察点设置为调用函数的地址:
    watch0xxxxxxx
  • 运行直到达到观察点

  • 如果返回地址被覆盖,db应该在破坏呼叫时停止。

    很奇怪,您没有正确的回溯跟踪,您是否使用“-g-O0”选项构建?是否是堆栈损坏正在覆盖返回地址?@jcm会-O0影响它?可能是生成器通过从二进制文件中修剪调试信息来优化应用程序<代码>-O0禁用优化并避免这种可能性。另一方面,根据回溯中的行数,我打赌堆栈会损坏。我将尝试添加一个答案,试图在这方面提供帮助。