包含了自己的一些思考,欢迎高手指点。主要是有几个方法:

  1. 编译时错误
    这部分错误,在编译过程中,一般的编译器都会对语法和语义分析然后给出相关的警告或者错误。相对应的还有更复杂的运行时错误

  2. 调试工具或者用IDE
    程序错误使用调试工具进行定位,如gdb等。IDE也是使用的调试工具。

  3. 打印输出
    小程序可以打印到终端如 C语言的 printf,C++ 的 std::cout。大项目可以写 log。使用日志框架或者自己手动写。可以发现运行时错误、逻辑错误。

  4. 逻辑错误
    这部分错误是很难被发现的。可能是解决具体问题的算法逻辑或者整个项目模块之间的设计逻辑等。

  5. 注意编码习惯
    在容易出现问题的地方,比如链表判空、指针判空、数组容易越界的地方,及时写异常处理的代码,并标记位置。如C语言的 宏 __LINE__,__FILE__,__func__ 可以定位代码的位置

  6. 使用程序库提供的异常处理方法
    如C++异常处理、Java的异常处理

  7. 设计测试用例和使用单元测试
    对边界值等各种情况设计测试用例进行测试

扩展阅读:
[1] https://www.lemoda.net/c/line-file-func/
[2] https://textexpander.com/blog/the-7-most-common-types-of-errors-in-programming-and-how-to-avoid-them

如何发现程序中的错误相关推荐

  1. PHP用set_error_handler()拦截程序中的错误

    PHP用set_error_handler()拦截程序中的错误 字号: 小 中 大 作者:JeffJing   发布:2011-05-30 08:05   围观:16,903 views   1条评论 ...

  2. 慕课软件质量保证与测试(第九章.程序中隐藏错误数量估计)

    慕课金陵科技学院.软件质量保证与测试.第九章.软件质量与质量保证.程序中隐藏错误数量估计 0 目录 9 软件质量与质量保证 9.2 程序中隐藏错误数量估计 9.2.1 课堂重点 9.2.2 测试与作业 ...

  3. php 应用程序错误,php – 应用程序中的错误处理函数

    我在编程方面比较新.我试图捕捉并显示我的应用程序中的错误.全局变量很简单: $errors = ''; class Name { /** * Validate form */ public funct ...

  4. 报告客户端Web应用程序中的错误时的安全问题

    目录 介绍 背景 建议的解决方案:将Logger中的错误日志与发送到应用程序的消息链接起来 可恢复和灾难性错误 管理生产中的灾难性错误 管理开发中的灾难性错误 管理生产中的可恢复错误 管理开发中的可恢 ...

  5. c语言程序中的错误可分为,C语言程序常见错误与调试方法(1)

    <C语言程序常见错误与调试方法(1)>由会员分享,可在线阅读,更多相关<C语言程序常见错误与调试方法(1)(17页珍藏版)>请在人人文库网上搜索. 1.C语言程序常见错误与调试 ...

  6. c语言中的语义错误和语法错误,C语言程序中对错误的调试

    程序调试 现在我们已经可以编写一个简单的 C语言程序了,但是你可能会犯一些简单的错误.程序的错误通常叫做 bug,而发现和修正这些错误的过程叫做调试.下面有一个带有一些错误的程序,看看你能找出多少. ...

  7. c语言程序中的错误可分为,《C语言程序设计(本)》模拟试卷1.doc

    <C语言程序设计(本)>模拟试卷1 <C语言程序设计(本)>模拟试卷1 总分:100分 时间:90分钟 一.单项选择题 :(每题2分,共18分) 1.下列字符列中,可以作为&q ...

  8. ofo押金是否可以起诉_是否可以因应用程序中的错误而被起诉?

    ofo押金是否可以起诉 An article which recently appeared on TechRepublic will strike fear into the heart of al ...

  9. 帮我找一下JAVA_急!!!帮我找出程序中的错误

    2018-03-31 对象不支持此属性或方法.我该怎末办? 收到的邮件是乱码应该如何处理 1>一般来说,乱码邮件的原因有下面三种:1.由于发件人所在的国家和地区的编码和中国大陆不一样,比如台湾香 ...

最新文章

  1. 用C#操纵IIS(代码)
  2. Python使用matplotlib可视化两个时间序列的交叉相关性图、交叉相关图显示了两个时间序列之间的滞后性(Cross Correlation plot)
  3. Verilog中实现电平检测
  4. python大神-Python 大神 kennethreitz 又搞事了
  5. getElementsByclassName
  6. (转载)Android性能优化典范
  7. Windows下安装MySQL压缩zip包
  8. 初探WCF 如何在配置文件中指定Address?
  9. PAT:1001. 害死人不偿命的(3n+1)猜想 (15) AC
  10. OpenJDK源码研究笔记(六)--观察者模式工具类(Observer和Observable)和应用示例
  11. 使用Photoshop对图像进行二值化处理
  12. 关于程序员的调查报告
  13. Jquery 实现json复杂查询等操作(jsonDB)
  14. Hive on spark执行子查询报错code3
  15. 『ABP』ABP vNext中使用开源日志面板 LogDashboard
  16. dell设置从ssd启动_戴尔笔记本加了固态硬盘后怎么设置从固态硬盘启动
  17. 数据类型(int、short、long、long long、unsigned、char、float、double)
  18. HTML 常用特殊符号
  19. 从前端出发做好SEO需要考虑什么
  20. 联想笔记本不能开机进入BIOS设置怎么办?

热门文章

  1. 海力士芯片 HY57V561620FTP-H 的内存容量问题
  2. 原始值和引用值类型及区别
  3. linux下定时备份文件,Linux下定时备份文件
  4. 详尽解读正则表达式:python下的re方法
  5. 三星4k3d电视测试软件,说出来你可能不信:3D、4K、曲面电视慎重购买
  6. 微信小程序与普通网页开发的区别
  7. elk面试题_2019年最新公务员、事业单位面试题库(含答案)elk
  8. Live555源码分析
  9. [算法]n阶台阶,一次走一步或两步,有多少种走法?
  10. 2022年深圳技能大赛-大数据技术应用职业技能竞赛介绍