• No.14 程序调试


    程序排错与程序开发是一个不可分割的整体,广义的程序开发包括程序调试,要正视程序排错

    1. 程序的可调试性

    • 添加注释
    • 使用log
      • log4j:辅助程序调试;记录程序的运行日志
      • logger及其继承关系
        • 只有当方法的优先级高于/等于logger的优先级时才会输出
        • 如果程序没有显示地指定某个logger的level,将继承离他最近的祖先的level
        • 将logger的名字与它所在的类的全类名相同
          • logger继承体系与类的继承体系相同
          • 当控制某个包内的调试信息时,设置该变  以该 包名 为 名字的 logger的level即可
      • Appender和layout
        • Appender:输出到哪
        • layout:输出格式,怎么样个形式输出
      • 具体使用:参考http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html

    2. 程序调试的基本方法

    • 编译器的代码审查
    • 跟踪执行流程(单步调试)
    • 断点调试
    • 隔离调试(整段注释,调试剩下的,推荐给每行添加单行注释,而非对整段多行注释)
    • 错误重现:有些错误比较隐蔽,不是每次都会出现。常见:多线程中,猜测后通过添加额外条件验证猜测,使得问题每次都能够出现,然后排错

    3. 记录常见错误

    • 常用的了解
    • 搜索引擎

    4. 程序调试的整体思路

    • 有错误信息是幸福的
    • 没有提示信息的排错
      • 分段调试:将程序分段,对每段进行分开调试(一般是log),逐个击破;确定范围,缩小范围,对缩小后的范围再分段,循环,找到问题所在
    • 分模块调试
    • 调试心态
      • 谁都会出错
        • 写和调本就是一个整体,没有不需要调的程序。调程序本身也不是个简单、轻松的事情。做好心理准备
      • 调比写更费时
        • 调试时间往往难以估计,如果碰到古怪问题的话
        • 难免产生烦躁 ;换个环境、心情调剂一下
        • “细活”,不是蛮力坚持可以解决的,保持头脑清醒;如果已经很长时间了,不如中断一下,恢复脑力、精力,往往有奇效。(跳出来的时候往往更清醒,更理智)
    PS:不足之处,欢迎指正、交流
  • 相关阅读:
    Git 安装配置,key导入
    Android集成支付宝的坑
    RxJava 的使用入门
    RecyclerView 介绍 02 – 重要概念
    AndroidTips:selector的disable状态为什么无效?
    AndroidTips:解决Dialog全屏显示以及Dialog显示自动弹出输入法
    RecyclerView 介绍 01
    python模块-----sqlAlchemy
    python模块-----pyinstaller
    python模块------socket
  • 原文地址:https://www.cnblogs.com/fang--/p/6193142.html
Copyright © 2020-2023  润新知