+ -
当前位置:首页 → 问答吧 → 程序排错,出现Segmentation fault,一般怎么做排查

程序排错,出现Segmentation fault,一般怎么做排查

时间:2010-07-30

来源:互联网

求教。程序很简单,新手救方法。
  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下开发的大牛们,一般遇到这种问题,从那些方面思考,谢谢。

作者: Coolriver   发布时间: 2010-07-30

懒的看了.用GDB跟一下就出来了

作者: zhangsuozhu   发布时间: 2010-07-30

mem
anrry
point

作者: prolj   发布时间: 2010-07-30

两位大师,这么快的速度。
GDB跟到:
*str='\0';

作者: Coolriver   发布时间: 2010-07-30



QUOTE:
mem
anrry
point
prolj 发表于 2010-07-30 18:09




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

作者: Coolriver   发布时间: 2010-07-30

char *str = "ibdata1:10M;ibdata2:20M:autoextend\n";  静态字符串.不能改,而你却
*str='\0';

作者: zhangsuozhu   发布时间: 2010-07-30



QUOTE:
char *str = "ibdata1:10M;ibdata2:20M:autoextend\n";  静态字符串.不能改,而你却
*str='\0';
zhangsuozhu 发表于 2010-07-30 18:23




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

作者: liwangli1983   发布时间: 2010-07-30

相关阅读 更多