最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解...
分类:
系统相关 时间:
2015-07-19 19:27:14
阅读次数:
206
dummy_function(void){ unsigned char * ptr=0x00; *ptr=0x00;}int main(){ dummy_function(); return 0;}作为一名熟练的c/c++程序员,以上代码的bug应该是很清楚的,因为它尝试操作...
分类:
其他好文 时间:
2015-06-23 00:37:52
阅读次数:
146
转自于:http://blog.csdn.net/fcryuuhou/article/details/8507775在程序遇到段错误不寻常退出时,一般是访问内存出错。但是不会给出程序哪里出现的问题,这个时候就需要core文件来帮助调试。内核会在当前工作目录下生成一个core文件(是一个内存映像,同时...
分类:
系统相关 时间:
2015-06-19 13:09:32
阅读次数:
227
今天写程序遇到一个问题:Program terminated with signal 11, Segmentation fault.
gdb 调试现象如下:
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fff1b1fc000
Core was generated by...
分类:
其他好文 时间:
2015-06-16 16:52:51
阅读次数:
332
1.如果崩溃在程序中,例如 SMH kernel: process_name[32183]: segfault at 24 ip 0000000000412b13 sp 00007fffaab744e0 error 6 in process_name[400000+6e000]
1> 可以通过 addr2line -e process_name 0x412b13 -f 具体定位到源...
分类:
系统相关 时间:
2015-06-11 12:59:58
阅读次数:
397
最近在做字符串的保序压缩编码,由于暂时找不到合适的方式,采用了最笨的方式,对字符串进行排序再采用压缩编码。由于字符串数目巨大,一次性全部至于内存中就会出现段错误。我们常常说大文件的排序一般都是采用划分、内部排序再归并的方式,道理听过千遍,甚至烂熟于心,却依然在实现的过程中碰到很多问题。在已有系统中,...
分类:
编程语言 时间:
2015-06-07 17:10:25
阅读次数:
206
//简单的捕捉段错误信号信号处理程序,通过signal来捕捉错误.#include#include#includevoidhandler(ints){if(s==SIGINT)printf("nowgotainterruptsignal");if(s==SIGSEGV)printf("nowgota...
分类:
其他好文 时间:
2015-06-03 15:12:03
阅读次数:
120
我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难 免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个 内存访问...
分类:
其他好文 时间:
2015-06-03 09:35:27
阅读次数:
103
在实际开发过程中,大家可能会遇到段错误的问题,虽然是个老问题,但是其带来的隐患是极大的,只要出现一次,程序立即崩溃中止。如果程序运行在PC中,segment fault的调试相对比较方便,因为可以通过串口、显示器可以查看消息,只要程序运行,通过GDB调试工具即可捕捉产生segment fault的具...
分类:
系统相关 时间:
2015-06-03 09:33:20
阅读次数:
171
转自:http://book.51cto.com/art/201311/419441.htm3.21 strcat函数造成的段错误代码示例intmain() { chardest[7]="12345"; char*src="abcdefghigklmnopqrstuvwxyz"; strcat(de...
分类:
其他好文 时间:
2015-06-03 00:40:39
阅读次数:
250