2 ssdut 209 ssdut_209 于 2016.03.14 14:27 提问

linux 下 segmentation fault (core dumped) 错误出在哪里

#include
#include
int sum;
void * runner(void * param);

int main(int argc,char * argv[])
{
pthread_t tid;
pthread_attr_t attr;
if(argc<2)
{
printf("the number of paraments shuold more than 1");
return -1;
}
if(atoi(argv[1]<0))
{
printf("the parament should be more than 0");
return -1;
}
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,argv[1]);
pthread_attr_destroy(&attr);
pthread_join(tid,NULL);
printf("sum=%d",sum);
}

void * runner(void * param)
{
int i,upper=atoi(param);
sum=0;
for(i=0;i<=upper;i++)
sum+=i;
pthread_exit(0);
}
大神求解答
在终端./main.c 5 输入后就提示
segmentation fault (core dumped)

4个回答

oyljerry
oyljerry   Ds   Rxr 2016.03.14 16:26
已采纳

直接gdb断点跟踪一下,看具体异常的代码位置,多数是指针越界等

deltatang
deltatang   2016.03.14 14:50

使用gdb 读取你的coredump文件,whereis

qq_21792169
qq_21792169   2016.03.14 21:59

看下这篇文章:http://blog.csdn.net/qq_21792169/article/details/50809501 利用gdb追踪错误或者利用strace命令来调试

luobo2305
luobo2305   2016.03.15 20:07

atoi(argv[1]<0)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[转]【已解决】Linux下出现Segmentation Fault(core dump)错误
Linux环境下段错误的产生原因及调试方法小结
【已解决】Linux下出现Segmentation Fault(core dump)错误
今天被这个问题搞了半个小时,后来通过添加printf(...)语句的方法找到了错误原因,是因为在程序中错误的输出一个为空的字符串导致。。。 博客地址:http://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html 1. 段错误是什么 一句话来说,段错误是指访问的内存超出
Segmentation fault (core dumped)出错原因及位置分析
一 Segmentation fault (core dumped)原因 Segmentation fault (core dumped)多为内存不当操作造成。空指针、野指针的读写操作,数组越界访问,破坏常量等。如最近的势能图代码中的链表操作,对链表的新增和释放包括赋值等等,如出现不当操作都有可能造成程序崩溃。对每个指针声明后进行初始化为NULL是避免这个问题的好办法。排除此问题的最好办法则是调
再谈Segmentation fault (core dumped)问题 -查找段错误原因
再谈Segmentation fault (core dumped)问题 -查找段错误原因    在前一篇文章“Segmentation fault (core dumped) ”有说了具体core dumped产生的原因, 下面主要来介绍下问题的解决与查找,在linux下一般都使用gdb进行调试,那今天我就以Ubuntu 14.04环境作为介绍, 来查找正在的core du
php “Segmentation fault (core dumped)”问题解决
今天新安装系统,再安装完 php 之后, 发现没法运行 php-fpm  , 运行报错: php -info 正常运行。 php -v 显示错误,并产生 php.core 文件 最后找到,原来在扩展中启用了 recode 就导致 php 报错 在 extension.ini 中关掉  ;extension=recode.so .
Linux下利用core来调试segmentation fault
Segmentation fault(段错误)是由于虚拟内存管理单元的异常所致,而该异常则通常是由于解引用一个未初始化或非法值的指针引起的。 Linux中提供了core dump的功能,使得对这类错误的调试更为容易。一般情况下,linux系统是不允许产生core文件的,因此首先要解除这个限制: ulimit -c unlimited 接下来,运行含segmentation fault的段程序,
Segmentation fault (core dumped)的解决办法
前几天有同学代码出现了core dumped错误,然后就来找我帮忙。下边我来整理一下core dumped错误的解决办法。希望本文对同样遇到此问题的你有所帮助。先看以下的错误代码: 很明显,是一个除0错误。 写完代码,运行>> 编译器竟然给出了 警告。 这里,我们先必须了解 core dumped是什么?其实就是核心转储。进程异常终止,进程用户空间的数据就会被写到磁盘。(linux下一般不会
Ubuntu--(8)段错误Segmentation fault (core dumped)
–段错误 指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况,例如: 访问不存在的内存地址 include include include include include include include include include include include include
Segmentation fault (core dumped)解决方法
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump) 在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类
Linux下Segmentation fault(core dumped)简单调试方法
linux下的调试工具