免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4378 | 回复: 13

程序排错,出现Segmentation fault,一般怎么做排查 [复制链接]

论坛徽章:
0
发表于 2010-07-30 18:07 |显示全部楼层
求教。程序很简单,新手救方法。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         unsigned long int size;
  5.         char *endp;
  6.         char *path;
  7.         unsigned long int i = 0;

  8.         char *str = "ibdata1:10M;ibdata2:20M:autoextend\n";
  9.         printf("inti str : %s", str);

  10.         printf ("==================================\n");
  11.         while (*str != '\0') {
  12.                 path = str;
  13.                 while (( *str !=':' && *str !='\0') || (*str == ':' && ( *(str + 1) == '\\'|| *(str+1) =='/' || *(str+1) == ':'))){
  14.                         str++;
  15.                 }
  16.         if (*str == ':') {
  17.         *str='\0';
  18.         str++;
  19.         }
  20.         size = strtoul(str, &endp, 10);
  21.         str = endp;
  22.         if ((*str != 'M') && (*str != 'G')) {
  23.                 size = size / (1024 * 1024);
  24.         } else if (*str == 'G') {
  25.                   size = size * 1024;
  26.                   str++;
  27.         } else {
  28.                  str++;
  29.         }
  30.         i++;
  31.         printf("i %d,path %s \n",i, path);
  32.         printf("i %d,size %lu\n",i, size);
  33.         }
  34.         return 0;
  35. }
复制代码
环境在Linux,同时请教各位在Linux下开发的大牛们,一般遇到这种问题,从那些方面思考,谢谢。

论坛徽章:
0
发表于 2010-07-30 18:09 |显示全部楼层
懒的看了.用GDB跟一下就出来了

论坛徽章:
0
发表于 2010-07-30 18:09 |显示全部楼层
mem
anrry
point

论坛徽章:
0
发表于 2010-07-30 18:13 |显示全部楼层
两位大师,这么快的速度。
GDB跟到:
*str='\0';

论坛徽章:
0
发表于 2010-07-30 18:13 |显示全部楼层
mem
anrry
point
prolj 发表于 2010-07-30 18:09



    Prolj神人啊。我去Google一下你的关建词

论坛徽章:
0
发表于 2010-07-30 18:23 |显示全部楼层
char *str = "ibdata1:10M;ibdata2:20M:autoextend\n";  静态字符串.不能改,而你却
*str='\0';

论坛徽章:
0
发表于 2010-07-30 18:35 |显示全部楼层
char *str = "ibdata1:10M;ibdata2:20M:autoextend\n";  静态字符串.不能改,而你却
*str='\0';
zhangsuozhu 发表于 2010-07-30 18:23



    确实.犯这个错误的太多了.
虽然C书上一再提醒,但至少从我的角度来说,真正不会再犯这种错误还是弄清楚了程序文件在内存中分布后.

论坛徽章:
0
发表于 2010-07-30 22:03 |显示全部楼层
gdb a.out core

论坛徽章:
0
发表于 2010-07-31 03:58 |显示全部楼层
本帖最后由 langue 于 2010-07-31 03:59 编辑

一般比较短的代码扫一下就知道了,长的用调试器吧。

论坛徽章:
0
发表于 2010-07-31 09:47 |显示全部楼层
看不出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP