zoukankan      html  css  js  c++  java
  • 编程中若干调试方法总结

      最近和同事在解决一个定时任务的问题,搞了两三天没搞定,但是最终程序还是能够正常运行了。期间有一些定位问题的方法,感觉很好,可以拿来为以后调试问题所用。下面就简单说两句了。


            程序中用的quartz这个开源框架来实现定时任务,具体就是30s去调用groovy脚本。groovy脚本里面发送了三四个webservice的请求,然后再根据各自不同的返回值,做相应的逻辑处理。Job这快用一些反射原理来调用groovy,然后从DB中load一些数据,组装成map,传入groovy中。

    1、期间最为常用的就是debug,断点调试了,这个是大家所常用的。F5,F6,F7,F8这些键都是为大家所熟知的,如果是远程调试的,需要在远程(linux)上把web服务里         面的相关文件改一下。(jboss里面的bin文件是run.conf,把里面的倒数第二个#放开,端口改一下,在eclipse里面新建远程实例,配上IP,端口。重启服务即可远程调试                  debug。但是只能一个人连接使用。)

    2、在没有debug模式之前,或许你也会想到看日志,这个也是所常用的。首先你要确实log4j.properties的日志级别是否是你所要。fault ,error ,info,debug,warn五个级         别,从左往右级别依次降低。打印日志:如果配置为warn,则会打印所有级别;如果配置debug,则打印debug(包含)级别以上的日志。看日志调试问题,这就要求你的日         志打印是否合理或者打印的技巧。

    3、在我们那个问题在试了以上两招之后,貌似还没有定位出来问题的根源。后来就采用一种排除法,姑且叫排除法吧。
    其实就是注释代码。大家在做项目的时候,也可能会遇到,就是我把某几行代码注释了,代码就正常了。这说明问题就出在注释的代码块里。这个方法虽然有点二,但是也是           万不得已的绝招了。

    4、还有就是有可能你的异常没有捕获,就是你没有try catch,导致你不能正确定位问题根源。
    这个时候你就要走读代码,看那些地方需要捕获异常。

    5、还有就是数据库方面,需要事物提交的地方没有提交,这个需要走读代码去查看。

    6、当这次遇到问题,但是以前的版本没有遇到,这时候你就会查阅以前的版本代码,对比代码发现问题。

    解决问题,调试问题有很多种,大家在编程的时候也都会遇到,掌握多种方法可以提高定位问题的效率。

  • 相关阅读:
    jq 比较五获取结构树的位置 eq() 或者parent
    jq 笔记四 end的用法
    jq 笔记三 find的用法
    jq 笔记二filter()用法
    jq 笔记一 选择器中的逗号
    Linux 笔记五 搜索命令的命令
    linux 笔记四 文件搜索(locate)
    使用ansible时显示Failed to connect to the host via ssh
    linux音频解码软件ffmpeg的安装
    centos服务器jenkins安装配置
  • 原文地址:https://www.cnblogs.com/houguiqiang/p/3373342.html
Copyright © 2011-2022 走看看