重新设置断点1时出错:无法访问地址处的内存。出现此错误的原因是什么

时间:2016-06-19 22:31:42

标签: c++ gdb breakpoints

我正在尝试编译和调试我的代码,在gcc 4.8.1上运行并使用gdb版本7.5.1。

我不确定导致此错误的原因是什么,我无法设置断点或在gdb上使用start,所有这些都会产生相同(相似)的错误: Error in re-setting breakpoint 1: Cannot access memory at address 0xe0b01c

我看到了这个答案gdb error in re-settings breakpoint (cannot access memory),但我没有使用-fPIE,我使用的是-fPIC,而7.7.1也有同样的问题。

这个问题是由于gdb / gcc版本还是一些标志?我正在使用:-g -std=c++1 -D__GCC_EXPERIMENTAL_CXX0X__=1

1 个答案:

答案 0 :(得分:0)

  

这个问题是由于gdb / gcc版本还是一些标志?

您没有说明您是在主可执行文件中还是在共享库中设置断点。地址:0xe0b01c看起来像来自共享库或PIE可执行文件。

在任何情况下,GCC版本都没有没有来处理这个问题,但你的GDB已经很老了。

标准解决方案是使用(gdb) start,然后使用enable重新启用断点(当您停在main时,PIE可执行文件和所有直接链接的共享库已被重新安置到他们的最终地址。)