• bug调试宝典


    bug调试技巧

    宝典之一 : 坚信一个原则,程序不会说谎,一定是有原因的

    多数的错误表现看起来莫明奇妙,甚至不可思议

    但当我们找到问题后会发现:其实问题的根源是如此简单、如此的合乎道理。

    这就要求我们:

    1、保持一种淡定的心态,耐心地来查找问题

    2、仔细看日志:

    对着满屏幕的英文错误日志,不要慌,不认识的单词慢慢翻译,一定要仔细查找问题最初抛出的日志关键描 述。

    3、善于分析关键字

    大部分的错误互联网上是有解决方案的,但因为搜索关键字的选择错误,导致这些解决方案不被我们看到。

    一定要善于在错误日志种分析出关键的那几个“错误字眼”

    4、相信谷歌比百度更容易找到答案

     

    宝典之二:链路大法

    程序系统,就像一张复杂的电路网,程序的调用、数据传递过程,就像电流在电路流转。

    当这张网出问题时,我么顺着链路一点点的查找,总能找到问题点根源。

    我们拿一个简单的链路来举例:

     

    假设现在灯泡不亮了,面临这样一个链路,在没有任何调试数据时,我们可以说整个链路都可能是有问题的:

    (用红色表示有问题的链路)

    那么我们调试的方案如下:

    1、从起点开始:调试是否有电?

    把正负极连接一个没有问题的灯泡(绿色表示确定没问题):

    首先我们得找一个没有问题的灯泡来调试,如果这时还不亮,那说明电源有问题。

    2、如果电源没问题,我们再调试A点:

    依次如上调试,最终我们肯定能确定问题根源。


     

    我们把电路更换为程序链路来看一下:

    同理,从入口调试开始,先调试Nginx有无问题:

    同样地,我们需要先建立一个“确信点”,就像那个“没问题的灯泡”,对于nginx来讲,我们可以建立一个最简单的server来调试:

     

    如果确定nginx没问题,我们再依次确认A、B有无问题,有时模块的调用无法全链路调用调试,比如问题只发生在A掉B的时候,这时候curl,telnet就是我们有力的工具了,这个时候细展开链路可能会是这样子的:

     

    我们无法确认是B服务有问题了,还是k8s网路服务有问题了,此时我们可以在服务B中通过curl请求自己来确认:

    curl http://localhost:8080/api/xxx
    

      

    总之,链路大法的关键是要找一个“没有问题的灯泡”去调试某个链路点,比如建立简单的nginx server节点、curl、ping等等,

    通过一个我们确认没有问题的方法,一个个去排查链路上的问题。

    宝典之三:不要相信自己的猜测,眼见为实

    抛弃“我以为、我觉得、我猜测”

    即使是你认为没问题的链路点,也一定要亲自调试,亲眼见到才确定

     


    易族智汇(javashop)原创文章

     

     

  • 相关阅读:
    项目管理软件选择:redmine or JIRA
    为已编译的DLL附带强命名
    NET简单的一个画图程序
    公共的Json操作类
    ASP.NET 程序优化
    提高ASP.NET页面载入速度的方法
    DataTable快速定制之Expression属性表达式
    TCP和UDP Client 代码
    Jquery实现异步上传图片
    C语言Socket编程(计算机网络作业)
  • 原文地址:https://www.cnblogs.com/javashop-docs/p/11493066.html
Copyright © 2020-2023  润新知