设为首页收藏本站

腾控科技论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5111|回复: 1

[管理员已阅读]编程中常见错误原因

[复制链接]
steelen 发表于 2013-5-14 09:55:20 | 显示全部楼层 |阅读模式

参考《代码大全》及自己编程(C)中的一些错误记录,总结编程中产生错误的一些原因

1.拼写错误

a)        变量名,宏名,函数名等拼写错误,在编译阶段直接报错;

b)       变量名,宏名,函数名等拼写为相近的变量名,宏名,函数名等,在运行时出错;

2.逻辑错误

a)        if语句的真值逻辑判断,没有包括全部的条件,或者包含了不需要的条件;

b)       选择计算方式时,采用了错误的计算方法;

3.边界值问题(Off-one)

a)        if语句判断的边界值问题;

b)       while/for等语句的边界判断问题;

4.调用错误的近似函数

a)        函数名相近的函数,调用错误;(过去一段时间常调用错的memset/memcpy)

5.变量初始化问题

a)        局部变量初始化;

b)       函数入参的初始化;

c)       函数返回值的初始化;

d)       释放内存的初始化;

6.编译时的警告问题

a)        参照以前的常见警告列表;

7.版本管理

a)        很重要,需要做好版本管理;

8.可读性

a)        很重要,减轻以后的维护压力;


相应错误导致程序运行时出现的一些问题:

1.拼写错误;

a)        内存溢出;

b)       出现意外的结果;

2.逻辑错误;

a)        对于特定的值计算出现错误;

b)       对于某些条件,执行出错;

c)       数组越界;

d)       内存溢出;

3.边界值问题

a)        部分可归于逻辑错误;

b)       数组越界;

c)       内存溢出;

d)       循环结束时,出现多操作或者少操作一个元素;

4.调用错误的近似函数

a)        内存溢出;

b)       计算错误;

c)       结果在意料之外;

5.变量初始化问题

a)        大部分时候运行正确,偶尔运行错误;

b)       大部分时候运行错误,偶尔运行正确;

c)       在有些地方运行正确,在其他地方运行失败;(在某些函数之前,之后,之中)

6.编译器警告问题

a)        影响很严重;

b)       影响很小;

c)       没有影响;


找到原因的难易

1.拼写错误

a)        在编译时出现的错误,好找;

b)       在运行时出现的错误,有些好找,有些不好找;

2.逻辑错误

a)        错误没有出现,不好找,需要特定的条件,因为大部分时候运行正确,只有在特定值或者特定条件出现错误;

b)       错误如果出现了,比较好重现,这个时候变得好找;

3.边界值问题

a)        同(2)

4.调用错误的近似函数

a)        一般会导致运行出错,比较好找;

5.变量初始化问题

a)        如果想到了初始化问题,比较好找;

b)       如果没有想到初始化问题,十分难找;(因为现象出现随机,比较灵异。一般如果程序出现了比较灵异的运行现象,需要考虑初始化问题)

7.编译器警告问题

c)       重视警告,分析警告问题。


其他一些错误原因:

1.不同类型指针间的强制类型转换;造成数据截断或者错误

2.不同类型变量间的强制转换;造成数据截断

3.调用一些不安全的函数,如strcat等,没有长度限制的字符操作函数;


暂列如上。




该贴已经同步到 steelen的微博
腾控T919宽温以太网PLC上市,集成4路热电阻(PT100),同时集成8路DI,4路DO(晶体管输出),8路AI,3个串口
skymaxu 发表于 2013-6-28 14:11:54 | 显示全部楼层
老程序员的经验之谈
腾控T919宽温以太网PLC上市,集成4路热电阻(PT100),同时集成8路DI,4路DO(晶体管输出),8路AI,3个串口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

产品样机试用申请

QQ|小黑屋|手机版|Archiver|腾控科技|腾控科技 ( 京ICP备09109731号  

GMT+8, 2020-10-25 07:45 , Processed in 0.122383 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表