我正在尝试设置服务器处理核心转储的方式。为了测试它,我需要一个总是分段故障的程序。
有没有一个简单的示例程序总是分段故障?
main() { *(int *)0xdeadbeef = 37; }
应该这样做。
main;
是可移植的,并且在5chars中segfault
这是一个变量声明——int
类型是隐含的(从B语言复制的特性),0
是默认值。当执行时,它尝试执行一个数字(数字不可执行),并导致SIGSEGV
。
来源:https://codegolf.stackexchange.com/questions/4399/shortest-code-that-raises-a-sigsegv
试试这个:
long* ptr = 0x0; //-- you can also use other random values and likely you will segfault
printf("%f", *ptr);
您可以尝试:
main() {
char *p = NULL;
char c = *p;
}
这应该会死:
int main() {
char *die;
printf("%d",(int *)die * 200);
return 0;
}
编辑:
int main() {
char *die;
int killer = 200;
while(1) {
printf("%d",(int *)die * killer);
killer = killer * killer;
}
return 0;
}