当前位置: 首页 > news >正文

如何找做网站的公司/微营销软件

如何找做网站的公司,微营销软件,简述网站建设主要流程,寮步网站建设极致发烧在写程序的时候,最容易遇到的一类问题基本上就是段错误的问题,可以借助gdb来解决这类问题,下面是个例子: int main(void) {int man 0;scanf("%d", man);return 0;}运行输入会出现段错误:rootwc:~/Codes/Lea…

在写程序的时候,最容易遇到的一类问题基本上就是段错误的问题,可以借助gdb来解决这类问题,下面是个例子:

int main(void)
{int man = 0;scanf("%d", man);return 0;}
运行输入会出现段错误:

root@wc:~/Codes/Learn/learnGDB# ./segfault 
1
段错误 (核心已转储)
下面开始调试:

(gdb) start
Temporary breakpoint 1 at 0x40051e: file segfault.c, line 11.
Starting program: /root/Codes/Learn/learnGDB/segfault Temporary breakpoint 1, main () at segfault.c:11
11	    int man = 0;
(gdb) n
12	    scanf("%d", man);
(gdb) n
123Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a6c742 in _IO_vfscanf_internal (s=<optimized out>, format=<optimized out>, argptr=argptr@entry=0x7fffffffdf28, errp=errp@entry=0x0) at vfscanf.c:1857
1857	vfscanf.c: 没有那个文件或目录.
从上面可以看出,段错误的原因是scanf函数调用产生了一些问题,回到源文件查看会发现scanf的里面少加了一个&符号,所以导致了段错误。


下面在看一个段错误的实例:

#include<stdio.h>
int main(void)
{int sum = 0, i = 0;char input[5];scanf("%s", input);for (i = 0; input[i] != '\0'; i++) {if (input[i] < '0' || input[i] > '9') {printf("Invalid input!\n");sum = -1;break;}sum = sum*10 + input[i] - '0';}printf("input=%d\n", sum);return 0;
}
这个程序输入一个较长的字符串的时候就会出现段错误:

root@wc:~/Codes/Learn/learnGDB# ./segfault1
1234567890987654321234567890987654323456789098765432345678
Invalid input!
input=-1
段错误 (核心已转储)
使用gdb调试查看:

(gdb) n
12345678987654321234567898765432123456789876543212345678987654321
13	    for (i = 0; input[i] != '\0'; i++) {
(gdb) c
Continuing.
Invalid input!
input=-1Program received signal SIGSEGV, Segmentation fault.
0x0000000000400659 in main () at segfault1.c:25
25	}
(gdb) l
20	        sum = sum*10 + input[i] - '0';
21	
22	    }
23	    printf("input=%d\n", sum);
24	    return 0;
25	}
(gdb) n
12345678987654321234567898765432123456789876543212345678987654321
13	    for (i = 0; input[i] != '\0'; i++) {
(gdb) c
Continuing.
Invalid input!
input=-1Program received signal SIGSEGV, Segmentation fault.
0x0000000000400659 in main () at segfault1.c:25
25	}
(gdb) l
20	        sum = sum*10 + input[i] - '0';
21	
22	    }
23	    printf("input=%d\n", sum);
24	    return 0;
25	}
程序显示段错误发生在25行,但是这一行什么都没有,这可以算是一条规律,如果某个函数中发生访问越界,很可能并不立即产生段错误,而在函数返回时却产生段错误。这里实际上还是scanf函数存在问题。




http://www.jmfq.cn/news/4948219.html

相关文章:

  • 怎样做网站备案/竞价推广账户竞价托管
  • 收益网站制作/百度seo搜索引擎优化方案
  • 津南做网站的公司/百度小说排行榜总榜
  • 如何用模版做网站/公司网址
  • wordpress文章提交/武汉seo 网络推广
  • 大城b2c网站建设价格/seo优化的主要任务包括
  • 怎样做视频网站/网络营销的特点包括
  • 做班级玩网站做哪些方面/硬件工程师培训机构哪家好
  • 做网站建设网站制作/企业网站建设方案策划
  • 网站名称和备案名称不一样/网站策划书模板
  • 淮安市建设工程施工图审查处网站/chatgpt 网站
  • 网站关键词越多越好吗/网址查询域名
  • 免费个人网站模板/郑州计算机培训机构哪个最好
  • 沈阳做网站的公司推荐/广告投放平台
  • 公司做网站找谁做网站的公司/天津seo霸屏
  • 四川省的住房和城乡建设厅网站/上海最新政策
  • 个人网站 服务器/需要推广的app在哪里找
  • 做网站横幅 的网站推荐几个/超八成搜索网站存在信息泄露问题
  • 用来做区位分析的地图网站/最快新闻资讯在哪看
  • 自己建网站做推广/无锡百度公司王东
  • jsp网站开发教学/百度网站推广申请
  • 北京最大网站建设公司排名/全网投放广告的渠道有哪些
  • 电商网站方案/百度关键词排名点击
  • 做网站用微软雅黑侵权吗/怎么做网站推广多少钱
  • 晋州做网站/视频号下载器手机版
  • 做网站用笔记本做服务器吗/网络推广软文范文
  • 医院做网站定位/有什么引流客源的软件
  • 哪个网站可以做兼职ppt/游戏代理平台哪个好
  • 电脑网站转换手机网站怎么做/南宁seo产品优化服务
  • 外贸网站建设哪家比较好/站内seo优化