Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.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
C 总线错误在gdb中消失_C_Gdb - Fatal编程技术网

C 总线错误在gdb中消失

C 总线错误在gdb中消失,c,gdb,C,Gdb,我有一个C语言的大程序,它编译得很好,但是当我运行它(./a.out)时,我得到:总线错误10! 我使用gdb调试器跟踪内存错误,但奇怪的是程序在gdb内正常完成。是否可以解释这种行为,以及我现在如何调试代码?在某些操作系统上,gdb将以不同的方式在gdb中加载程序。我知道在MacOS上,gdb将禁用一些地址空间布局随机化,这将改变共享库的重新定位方式。在某些操作系统上,gdb将加载比正常程序执行更多的节,或者加载具有更大权限的节(非可执行内存可能在gdb下可执行,或者只读将变为可写) 您最好的

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

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


您最好的办法是捕获问题的核心转储,并从那里继续调试。Valgrind也擅长捕捉此类bug。

尝试在Valgrind而不是gdb下运行它。问题实际上只出现在MacOS上。Valgrind在osx 10.8中不起作用,所以我可能会切换到linux平台以避免麻烦。