EESKILL的个人空间 https://passport2.21ic.com/?1567396 [收藏] [复制] [RSS]

日志

【记录】编程中常见错误原因

已有 315 次阅读2015-9-22 10:02 |系统分类:资源宝藏| 编程, 经验分享, 程序设计

参考《代码大全》及自己编程(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等,没有长度限制的字符操作函数;

暂列如上。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)