当前位置:  技术问答>linux和unix

段错误为什么程序会退出?谁让退出的?

    来源: 互联网  发布时间:2016-04-16

    本文导语:  段错误为什么程序会退出?谁让退出的? 很常见的现象,现在要问问原因,请高手指点。 | 段错误对应的信号是SIGSEGV! 它的默认行为是: "Core   Default action is to terminate the process and dum...

段错误为什么程序会退出?谁让退出的?

很常见的现象,现在要问问原因,请高手指点。

|
段错误对应的信号是SIGSEGV! 它的默认行为是: "Core   Default action is to terminate the process and dump core"!
所以,如果你程序中不捕获信号SIGSEGV,那么其默认的处理方式是:中止程序并dump一份程序结束时的状态信息!

当然,你可以在程序中捕获该信号,简单的可以用signal()注册一个SIGSEGV的处理函数,那么这时候当发生SIGSEGV的时候,就会调用你注册的函数了! 而不是前面的默认行为!

对信号的捕获和处理,是在内核中进行的!

|
可能是内核让退出的吧,访问不该访问的地方,或者是C语言的编译器

|
段错误其实还是内存问题。。
遇到这个错误的时候系统就好像接到了ctrl +c信号退出
这些都是内核来监听的。

|
进程管理是操作系统的事情,所以进程遇到问题时,操作系统会终止进程,并把相关数据保存下来用来分析,这些数据就是core dump file

|
段错误,由内核识别并且通过信号SIGSEGV通知用户进程。

引起信号SIGSEGV的原因有很多。

比较典型的是,访问导致缺页时,将会判断这个访问是否是有效的,如果是有效的则内核负责为进程补上页面;否则内核通过信号SIGSEGV通知用户进程访问出错。

信号机制允许用户进程为某些信号的处理进行个性化定制。如果没有定制,则信号机制按照内核提供的缺省方案进行处理,那就是上面那位同志说的:


|


顶下这位仁兄的意见
个人认为正解。
另外一般来说SIGSEGV信号都是程序越界访问地址造成的,或者是内存溢出(其实本质上也是越界访问),基于内存保护机制内核会终止该进程

|
1)访问系统数据区,尤其是往 系统保护的内存地址写数据
 
2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域

实现这些的应该是os底层的?意思应该是程序没法运行了,比如一个变量,
运行的时候值是变的,如果没有这个变量的内存,自然就退出了,
段错误编译时候没问题,运行才有问题,这个问题好比死的人为什么不能吃饭? 


    
 
 

您可能感兴趣的文章:

  • QT退出段错误
  • 怎么实现父进程不管被Kill掉还是自己错误而退出,子进程都不会受影响而被终止
  • GTK程序在退出时出现free错误
  • 谁能帮忙解释一下程序退出的错误信息。
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • Linux下怎样查c程序的错误号?程序出现错误:System error 32: Broken Pipe, 是什么原因?
  • windows server2008上PowerBuilder程序系统错误解决方法
  • 在inter版solaris 8上编socket程序,在read时遇到错误,错误号14,用strerror()看不到错误描述,请解决,多谢!
  • 解决服务器应用程序不可用,错误:0x80070005拒绝访问的错误
  • IIS未找到提供程序该程序可能未正确安装错误解决办法
  • java.exe-应用程序错误(程序一运行就报错)
  • 求救,程序运行时出现"闹钟"提示错误!!!!
  • 手动执行应用程序ok,但用crontab(在正确的用户名下)运行应用程序就报-12545(tns连接错误),怎么解决?
  • RedHat9.0:程序运行“段错误”,为什么连执行系统命令都出现“段错误”?
  • 错误跟踪程序 YouTrack
  • GDB调试程序报如下错误:
  • IP地址数字互转 iis7站长之家
  • 用jbuilder开发的程序,其中用到了xylayout,将应用程序做成了jar文件,运行jar文件时,提示错误。请大家多帮忙
  • JAVA高手救命,如何对JSP程序进行错误控制!
  • 新手提问,应用程序运行:Permission denied错误
  • 执行一程序,向一个文本文件中写入数据,报文件大小超出限制错误!
  • 应用程序gnome-settings-daemon崩溃是什么错误?
  • VM下的linux Socket程序怎么客户机一连接就出现Bad address的错误?
  • mysql数据库的JDBC驱动程序为什么出现错误?
  • 急!!! 怎么通过core文件,查找程序中的错误!???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 bad():如果出现错误则返回true
  • Unmounting initrd failed 错误表示什么错误?可能是由什么引起的?系统原来一直运行正常,突然发现系统登陆错误,重启提示以上错误。
  • C++ I/O 成员 fail():如果出现错误则返回true
  • 请问段错误是什么错误啊
  • Mysql查询错误:ERROR:no query specified原因
  • linux安装codeblock 编译错误make: *** [all-recursive] 错误 1
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 求教:文件打包移植错误发生排序错误,小弟努力送分送分啦!59~~~
  • 几个windows平台C++开发错误举例
  • iis8.5显示ASP的详细错误信息500 内部服务器错误解决方法
  • 安装hadoop时出现内存不够及其它一些常见的hadoop错误解决办法
  • http错误404-文件或目录未找到 错误的解决方法
  • PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
  • mysql启动错误之mysql启动报1067错误解决方法
  • linux/centos安装nginx常见错误及解决办法
  • gnu c++如何得到对于编译错误和运行错误的帮助?
  • 紧急求救:在LINUX下如何根据错误代码,查出对应的错误描述?
  • jsp有没有检查语法错误的东西,难道只能在改完了在服务器上运行然后才能找到错误吗?
  • java.net.URLConnection中getOutputStream()方法出现协议不支持输出流的错误,请问为何会出现此错误?
  • PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
  • 请问rpm -ivh 出现下面错误是什么样错误?(急!!!!!!!!!!!!)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3