定位问题的几种方法

赖尚荣
• 阅读 3287

遇到bug不要慌张,淡定!

总结记录一下定位问题的几种方法

1、回溯法

通常程序都是 1-2-3-4-5这样按顺序执行的,根据错误提示反向查找,直至找到问题的根源,是最简单的方法

2、二分法

有时候遇到不知所以然的问题,可以使用二分法,例如将程序分为A、B两部分,只执行其中一部分,看程序是否可以 正常不正常 执行,

然后在不正常的一部分内继续二分,不断的缩小查找范围

3、对照法

对照法通常用在程序可以正常运行,但是输出结果不对的情况下。这时候可以在正常的程序A、不正确的程序B内都打印日志,看看日志内的关键对象是否一致,达到快速分析出来问题的目的。

4、执行最终SQL

这种方法通常用在程序没有报错,正常运行情况下数据不对,或者数据库方面的错误的情况下,将最终要执行的SQL语句打印出来在数据库内执行,查看预期结果是否正确,再回溯错误原因

通常这几种方法会结合使用,助你快速定位问题。

点赞
收藏
评论区
推荐文章
Alex799 Alex799
4年前
Vue进阶(幺陆柒):Vue项目调试技能
前言在Vue项目开发过程中,当你遇到应用逻辑出现错误,但又无法准确定位的时候,知晓Vue项目调试技巧至关重要。同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法内、跳出方法等调试,从而准确定位问题根源
Karen110 Karen110
4年前
一篇文章带你了解JavaScript htmldom 元素
这篇文章将教会大家如何查找和访问网页中的HTML元素。一、找到HTML元素通常,使用JavaScript,想操作HTML元素。要做到这一点,必须先找到元素。有几种方法可以做到这一点。找到DOM中的HTML元素的最简单的方法,是利用元素的id。使用id"intro"找到元素:varmyElementdocument.getElementById("in
Easter79 Easter79
4年前
sql执行计划与优化
在我们实际工作中大部分人会遇到sql优化的问题,这篇文章主要介绍SQL优化相关。首先我们怎么发现我们的sql执行效率低呢,最简单的方法就是当用户反馈慢的时候我们就会知道哪里可能会有sql效率影响的问题,这里排除其他影响情况,只考虑数据库sql慢的问题。当然这种方式对于我们来说很被动,我们还可以通过什么方式找到有性能问题sql,我们可以通过MySQL的配置文
Easter79 Easter79
4年前
tf.keras遇见的坑:Output tensors to a Model must be the output of a TensorFlow `Layer`
经过网上查找,找到了问题所在:在使用keras编程模式是,中间插入了tf.reshape()方法便遇到此问题。 解决办法:对于遇到相同问题的任何人,可以使用keras的Lambda层来包装张量流操作,这是我所做的:embed1keras.layers.Embedding(10000,32)(inputs)
Stella981 Stella981
4年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Stella981 Stella981
4年前
IntelliJ Idea取消Could not autowire. No beans of 'xxxx' type found的错误提示
1.问题描述在Idea的spring工程里,经常会遇到Couldnotautowire.Nobeansof'xxxx'typefound的错误提示。但程序的编译和运行都是没有问题的,这个错误提示并不会产生影响。但红色的错误提示在有些有强迫症的程序员眼里,多多少少有些不太舒服。!输入图片说明(https://static.o
Stella981 Stella981
4年前
ReviewBoard实现自动post
ReviewBoard实现自动postcommit在svnhooks中使用RBTools工具的rbtpost命令向Reviewboard自动提交reviewrequest(评审请求)在实践中遇到的主要问题为:rbt命令在linux终端可以执行但在svnhooks中执行出错经过不断定位、尝试,终于解决了该问题,记录并分享...欢迎交流
Stella981 Stella981
4年前
JVM问题排查也不是很难
目录概述环境准备工具介绍远程连接方式开启JMX工具远程连接参考文献概述   线上环境中,程序越来越慢,一头雾水?遇到程序经常宕机,但找不到原因?排查问题却经常记不住命令?那是没找到好的方法而已,本文将介绍一下JVM问题排查工具的使用,工具仅仅是工具,还是需要知道
Stella981 Stella981
4年前
RobotFramework自动化测试之元素定位
前言:最近在做基于RF框架的Web自动化测试,其中涉及到元素的定位,主要用到id、name、xpath、css四中定位方法,尤其后面的两种方法特别有效,可以解决大部分的定位问题。
Stella981 Stella981
4年前
Netbeans中文乱码问题汇总
Netbeans中文乱码问题汇总(转)2009071110:37最近刚刚开始用Netbeans,就遇到了最容易遇到的中文乱码问题。(好像从Eclipse,到JBuilder再到Netbeans,都需要解决这类问题)于是在网上查找了一下,这里给出一个常见的中文乱码问题汇总。呵呵。   最常见的,源程序导入Netbeans中以后,其中的注释或
Stella981 Stella981
4年前
Python日志库logging总结
在部署项目时,不可能直接将所有的信息都输出到控制台中,我们可以将这些信息记录到日志文件中,这样不仅方便我们查看程序运行时的情况,也可以在项目出现故障时根据运行时产生的日志快速定位问题出现的位置。1、日志级别Python标准库logging用作记录日志,默认分为六种日志级别(括号为级别对应的数值),NOTSET(0)、DEBUG(10)