首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我不能导致seg错误?

为什么我不能导致seg错误?
EN

Stack Overflow用户
提问于 2010-01-12 06:07:39
回答 10查看 15.1K关注 0票数 23

好的,不管是什么原因,我在引发seg错误时遇到了麻烦。我想生成一个,这样我就可以使用gdb来查看如何调试一个。我已经尝试了the Wikipedia文章中的两个示例,但都不起作用。

第一个:

代码语言:javascript
复制
char *s = "Hello World!";
*s = 'H';

第二个例子:

代码语言:javascript
复制
int main(void) 
{
    main();
}

EDIT:我使用Ubunu9.10和g++作为我的编译器。有没有人能给我看一些保证会出现segfault的代码?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-01-12 06:35:57

尝试并可靠地取消引用指针是不可能的。

这是因为应用程序处理内存的方式在不同的编译器之间可能会有所不同,在具有不同选项的相同编译器上也会有所不同(调试/释放模式的处理方式不同)。

您可以做的是使用一个信号显式地引发段错误:

代码语言:javascript
复制
#include <signal.h>

int main()
{
    raise(SIGSEGV);
}
票数 48
EN

Stack Overflow用户

发布于 2010-01-12 06:11:43

我的一句话:

代码语言:javascript
复制
*(char *)0 = 0;
票数 25
EN

Stack Overflow用户

发布于 2010-01-12 06:40:32

有史以来最短的段故障:

代码语言:javascript
复制
*(int*)0=0;
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2045314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档