修订:2013-02-16其实还可以使用glibc的backtrace_symbols函数,把栈帧各返回地址里面的数字地址翻译成符号描述的修订:2011-06-11背景知识:· 在linux/unix中的信号处理机制,知道signal函数与sigaction的区别· 段错误的概念,CPU中断处理的步...
分类:
编程语言 时间:
2015-06-02 11:06:29
阅读次数:
539
本文为“在C/C++中捕获段错误,打印出错的具体位置”的续篇,进一步解决涉及动态链接库的情况。背景知识:·linux/unix下动态链接库的基本原理·/proc/pid/maps文件的基本格式·动态链接库:在进程执行过程中动态加载,进程间可以共享代码,可用在发布升级包等场合概述: 用户自己编写的代码...
分类:
系统相关 时间:
2015-06-02 11:02:32
阅读次数:
341
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解...
分类:
系统相关 时间:
2015-06-02 10:52:05
阅读次数:
225
在 Linux 上找出并解决程序错误的主要方法您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,还有挂起...
分类:
系统相关 时间:
2015-05-23 11:24:38
阅读次数:
254
笔者早年写过一篇:《可恶的"Segmentation faults"之初级总结篇》,网络转载甚多。多年下来,关于段错误的讨论依旧很热烈,该问题也还是很常见。所以打算在这里再系统地梳理一下该问题的来龙去脉。...
分类:
系统相关 时间:
2015-05-22 09:45:28
阅读次数:
1460
今天在实现一个查找功能的时候,需要用到排序,因为用的是C开发,就把自己之前写的快速排序算法直接拿来用了。代码如下: 1 static void QuickSort(ElemType *array,int left,int right) 2 { 3 if(left > right) 4 ...
分类:
编程语言 时间:
2015-05-20 17:49:38
阅读次数:
164
转自:http://blog.163.com/wanglianchen1982@126/blog/static/8442751200710255441327/1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样...
分类:
系统相关 时间:
2015-05-19 12:50:53
阅读次数:
275
先说一下问题现场。
代码如下
free(volthisframe->Tops);
free(volthisframe->Bots);
printf("what\n");
free(volthisframe->SCTops);
free(volthisframe->SCBots);
运行时出现段错误,“what”随机出现,也就是说可能是打印前出现段错误,也可能是打印后出现...
分类:
系统相关 时间:
2015-05-07 16:41:29
阅读次数:
305
Linux调试多线程:设置core环境uname -a 查看机器参数ulimit -a 查看默认参数ulimit -c 1024 设置core文件大小为1024ulimit -c unlimit 设置core文件大小为无限 多线程如果dump,多为段错误,一般都涉及内存非法读写。可以这样处理,使用下...
分类:
数据库 时间:
2015-05-04 15:16:05
阅读次数:
172
前言接上两篇:你的C/C++程序为什么无法运行?揭秘Segmentation fault (1)
你的C/C++程序为什么无法运行?揭秘Segmentation fault (2)写到这里,越跟,越发现真的是内核上很白,非一般的白。
但是既然是研究,就定住心,把段错误搞到清楚明白。本篇将作为终篇,来结束这个系列,也算是对段错误和程序调试、寻找崩溃原因(通常不会给你那么完美的stackstrace...
分类:
编程语言 时间:
2015-05-01 13:28:54
阅读次数:
260