总线错误在gdb中消失

时间:2012-09-17 10:25:06

标签: c gdb

我在C中有一个编译很好的大程序,但是当我运行它(./a.out)时,我得到:总线错误10! 我使用gdb调试器来跟踪内存错误,但奇怪的是程序在gdb中正常完成。可以解释这个行为,我现在要如何调试我的代码?

1 个答案:

答案 0 :(得分:1)

在某些操作系统上,gdb会在gdb中以不同方式加载程序。我知道在MacOS上gdb会禁用一些地址空间布局随机化,这会改变共享库的重定位方式。在某些操作系统上,gdb将加载比正常程序执行更多的部分,或者加载具有更宽权限的那些部分(非可执行内存可能在gdb下可执行或只读将变为可写)。

最好的办法是抓住问题的核心转储并从那里继续调试。 Valgrind也擅长捕捉这种类型的错误。