好的,不管是什么原因,我在引发seg错误时遇到了麻烦。我想生成一个,这样我就可以使用gdb
来查看如何调试一个。我已经尝试了the Wikipedia文章中的两个示例,但都不起作用。
第一个:
char *s = "Hello World!";
*s = 'H';
第二个例子:
int main(void)
{
main();
}
EDIT:我使用Ubunu9.10和g++
作为我的编译器。有没有人能给我看一些保证会出现segfault的代码?
发布于 2010-01-12 06:35:57
尝试并可靠地取消引用指针是不可能的。
这是因为应用程序处理内存的方式在不同的编译器之间可能会有所不同,在具有不同选项的相同编译器上也会有所不同(调试/释放模式的处理方式不同)。
您可以做的是使用一个信号显式地引发段错误:
#include <signal.h>
int main()
{
raise(SIGSEGV);
}
发布于 2010-01-12 06:11:43
我的一句话:
*(char *)0 = 0;
发布于 2010-01-12 06:40:32
有史以来最短的段故障:
*(int*)0=0;
https://stackoverflow.com/questions/2045314
复制相似问题