文章目录
1. 一、什么是“Segmentation fault in Linux”
2. 二、SIGSEGV产生的可能情况
3. 三、调试定位SIGSEGV
Segmentation Fault错误原因总结
By Wangt
5月 11 2015 更新日期:5月 11 2015
最近在项目上遇到了Segmentation Fault
的错误,一直调试不出来是哪里出了问题,对
于刚接触嵌入式的,也不知道该如何去调试一
个项目,定位内存问题,纠结了好几天,好阿
红整理下自己的思路。从头开始。
以下内容只为整理来自己使用的,大多来源于网络,感谢大家的分享:
http://www.cnblogs.com/no7dw/archive/2013/02/20/2918372.html
http://blog.chinaunix.net/uid-20780355-id-538814.html
一、什么是“Segmentation fault in Linux”
就是:所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通
常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的
gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的
在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程
序运行的代码段以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行
级别还有内存粒度等等的信息。一旦一个程序发生了越界访问,cpu就会产生相应的
异常保护,于是segmentation fault就出现了。
即“当程序试图访问不被允许访问的内存区域(比如,尝试写一块属于操作系统的
内存),或以错误的类型访问内存区域(比如,尝试写一块只读内存)。这个描述是
A segmentation fault (often shortened to SIGSEGV) is a particular
Segmentation is one approach to memory management and protection
On Unix-like operating systems, a process that accesses an invali
评论0
最新资源