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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!