精华内容
下载资源
问答
  • 最近的一个项目应用了Acegi作为安全框架,项目试运行期间出现了一个隐藏比较深的Bug:当运行一段时间之后,对于URL资源串的控制功能失效!在更新了acegi最新版本后仍没有... 在 通过压力测试排查Bug(一)--测试过程 ...

         最近的一个项目应用了Acegi作为安全框架,项目试运行期间出现了一个隐藏比较深的Bug:当运行一段时间之后,对于URL资源串的控制功能失效!在更新了acegi最新版本后仍没有排除该Bug。

          因为该Bug的发生需要在运行一段时间后才会发现,排查起来比较困难,因此需要通过测试工具进行一定时间的压力测试以后来重现故障的发生!

         在 通过压力测试排查Bug(一)--测试过程 中我把测试的步骤介绍了一下,下面我将该Bug的排查过程介绍一下,以供参考:

     

          通过MyEclipse的调试模式运行的Web应用程序,可以通过设置断点进行单步调试,设置断点很容易,只需要在代码行之前(行数标注上)双击鼠标左键即可。当程序运行该代码处即会暂停运行,你可以在Debug模式窗口中观察程序运行状态。

          因为acegi对url的控制是在filter中进行的,所以我将断点设置在了继承了AbstractFilterInvocationDefinitionSource的自定义filter中:

          通过观察断点处的变量值,发现urls变量的值不正常,该值应该是在后台管理的所有URL资源才对,现在全部变成了多个一样的同一个URL,问题就出在了这里!什么导致了变量值的紊乱呢?以下方法引起了我的注意:

    		//倒叙排序所有获取的url
    		orderUrls(urls);
    	/**
    	 * 把url资源按倒序排序
    	 * @param urls
    	 */
    	private  void orderUrls(List<String> urls) {
    		Collections.sort(urls);
    		Collections.reverse(urls);
    	}

          该方法对urls按照字母顺序进行了倒序排序,因为Collections.sort是静态方法,在执行时,值参应该是在一处内存地址上操作,因此并发操作时,一定会产生互相干扰重叠的排序操作,造成了urls变量值的紊乱!

           因此我将该方法前加上了synchronized关键字,防止多个线程同时访问这个方法。

    	/**
    	 * 把url资源按倒序排序
    	 * @param urls
    	 */
    	private  synchronized  void orderUrls(List<String> urls) {
    		Collections.sort(urls);
    		Collections.reverse(urls);
    	}

          再经过一轮的压力测试,没有再出现类似的问题,至此该Bug成功消除!

          出现的这个缺陷提醒我们,以后编程时一定要注意线程并发操作的影响,在有影响的位置注意使用synchronized 关键字来防止多个线程同时访问一处代码!

          同时看出,压力测试的必要性,不进行适当的压力测试有可能发现不了更隐蔽的缺陷,尤其是多线程并发操作的应用。压力测试还能考察开发出来的系统的性能如何、运行是否稳定、是否能够满足实际应用环境的客户的访问量。

    展开全文
  • 排查bug的步骤

    2015-07-25 10:38:00
    原创文章,欢迎阅读,禁止转载。 bug预防C/C++代码发布前的检查:检查有没有低级错误,可用cppcheck ...排查bug的步骤: 复现--让你看到bug的表现固化--尽量让bug能100%出现定位--找出问题根源修改--消除bug验证-...

    原创文章,欢迎阅读,禁止转载。

    bug预防
    C/C++代码发布前的检查:
    检查有没有低级错误,可用cppcheck

    (bug预防是指在写程序的时候,bug没出现,积极的进行预防,减少。包括良好的编码风格、编码习惯、使用管理工具和检查工具等。这个放在另一片文章中说吧。)

    排查bug的步骤:

    复现--让你看到bug的表现
    固化--尽量让bug能100%出现
    定位--找出问题根源
    修改--消除bug
    验证--测试bug是否彻底解决

    (排查bug指的是,已经出现了bug,现在需要把它解决掉)


    检查有没有内存泄露,结合检测工具运行试试。

    原创文章,欢迎阅读,禁止转载。

    转载于:https://www.cnblogs.com/zhaojk2010/p/4675454.html

    展开全文
  • 而且随着时间的推移,我也越来越能感受到,与开发能力同等重要的,就是排查问题的能力,有的时候我都说不清这两者究竟谁更重要一点。 很多时候,我们会戏称自己是写bug的,我现在想想,也觉得不无道理。...

    不知不觉工作已经快一年了,从开始工作以后,跟着大神们学习了很多,从一个小白慢慢的成长起来,从我目前的经验来看,我要感谢bug,这里的bug并不单单是指bug,而是指开发过程中遇到的方方面面的问题。而且随着时间的推移,我也越来越能感受到,与开发能力同等重要的,就是排查问题的能力,有的时候我都说不清这两者究竟谁更重要一点。

    很多时候,我们会戏称自己是写bug的,我现在想想,也觉得不无道理。我们都是普普通通工作的人,甚至编程相对而言,只是个苦力活,我们也没能力做到写出的代码一点问题也没有。更有甚者,一个项目下来,开发人员通常不止我们自己一人,这样下来,我们会遇到各种各样、奇奇怪怪的问题。

    我想总结一下,作为一个开发人员,遇到问题,我们通常的排查和解决方式是什么?

    1、首先就是要定位问题

    (1)复现问题:如果这个问题无法复现,那就极可能是人为操作失误导致的,属于神学范畴,可以忽略;

    (2)如果复现出问题,首次要做的是排查自己的逻辑层代码,确定是否是自己的问题导致的;

    (3)如果排除自己的逻辑代码层问题,确定是否是跟自己对接的其他人的代码有问题,如果都没有问题,那就尽自己能力去看看是否是框架的问题,到这里可以向有经验的同事请教,比如架构师等;

    (4)如果到了这一步,基本可以排除某一端的问题(前端或后端),继续按上面的方法排除另一端问题;

    (5)如果两端都没有问题,就要开始排查环境差异性问题了,这个就要大家齐心协力一起排查了,如果测试环境和生产环境本生就存在差异性,这个问题能不能解就要靠大家发挥自己的脑洞了。

    2、找到问题就要分这个问题能解不能解了,能解当然是好事,如果是硬件环境导致的无解的问题,就放弃吧。

    转载于:https://www.cnblogs.com/TiffanyHYY/p/10412176.html

    展开全文
  • findbug插件,自动排查简单的代码bug
  • 线上排查bug的一些总结

    千次阅读 2019-07-09 11:30:11
    然后我当时的想法是接着往下看,找到哪里调的方法 的方法名 找到该方法名之后,去本地debug 看看有没有异常。 发现并没有异常, 3:本地发现没事之后,这时候的想法是去把这个 服务器的 class 编译后的类...

    线上环境,有时候点击会报错,有时候点击不会报错。 

    1:第一想法,怎么这么奇怪有时候报错有时候不报错。我用线上的测试环境和本地的测试环境跑了几个流程发现根本找不到区问题所在。

    2:然后开始去线上找所有的服务器把日志都打开,进行搜索一开始搜索的服务器并没有相关报错的日志信息,继续找

    终于在其中一台找到了有该报错信息的日志。一开始先看报错信息  exepct '[' but string 怎么错误提示这么不明显。然后我当时的想法是接着往下看,找到哪里调的方法   的方法名

    找到该方法名之后,去本地debug  看看有没有异常。  发现并没有异常,

    3:本地发现没事之后,这时候的想法是去把这个 服务器的 class  编译后的类进行反编译和本地代码进行对比看看。

     反编译后发现没问题啊,一模一样。还把反编译后的代码本地测试了遍。也没问题,

    4:有点郁闷,这时候才开始百度 报错的信息代表什么意思。 我个人觉得遇到问题尽量先不要百度,自己先琢磨琢磨才行。

    5:百度之后发现了是 fastjson 解析出现的问题,但是我本地测线上的代码也没解析出错啊。

    6:突然顿悟,这段代码中是有去 根据 url 去解析json 的 ,这个url 和端口 是调用服务器本地的 项目,而我们本地没有这个项目,所以解析出来报错,但是可以被正常解析到 ,所以不会去执行 if  判断里面的方法

       String httpRs = HttpUtils.httpPost(seriesUrl, json.toString());
            AjaxJson ajOne = GoldenhomeGuiderController.getHttpReturn(httpRs);
            List<SeriesVO> seriesVOList = new ArrayList();
            if (ajOne.isSuccess()) {
                seriesVOList = JSONObject.parseArray(JSONObject.toJSONString(ajOne.getBody().get("data")), SeriesVO.class);

    但是在这一台服务器这个 url 和端口存在java 项目 ,请求这个项目解析出来肯定是不符合要求的。

    也就是进入到了这一行导致的报错!

                seriesVOList = JSONObject.parseArray(JSONObject.toJSONString(ajOne.getBody().get("data")), SeriesVO.class);

      我把本地请求的  url 和端口改为此服务器的公网 ip  和端口请求这个接口,终于遇到同样的错误了!

     

    总结:下次遇到这类问题的时候,先仔细思考,线上环境有时候有报错,有时候没有。而我们的项目都是用nginx  配置反向代理的,说明是有些服务器有问题,还有第二个 报错信息指的是 fastjson 解析出错,那么日志记录报错的方法源头查看 解析报错的代码在哪里,然后层层往上分析应该就能找到问题的所在了。

     

     

    展开全文
  • bug排查与修复场景 线上发现一个bug,但测试环境没有这条数据,无法验证。通常做法: 1.接口返回的数据在代码中写死 2.数据在mock平台上写死,本地在proxyTable中匹配 问题:写死的代码容易忘记还原,直接发布到...
  • 项目中常见BUG排查方法汇总

    千次阅读 2020-02-13 17:34:28
    常常有人问我寻求技术支持,其中包括排查办法、思路、有事直接参与技术排查过程中。怎奈我一人能力有限,无法满足整个DB部门的需求,痛定思痛,决定总结此文,以纪念过去十余年来踩过的坑。 2 需要的技术知识 计算机...
  • 如果测试工程师可以做到这样的话,BUG提交和处理的流程变成如下图2所示: 当然,在这个过程中,测试工程师一要提高自己排查BUG的准确度,二要提高自己排查BUG过程可以给开发做参考的可用度。 扩展: “作为一名软件...
  • 主要提供一种BugFree的思路 1.写日志时要养成的好习惯 保证在定位日志时可以离开代码情镜还能看懂问题是什么。 在方法前加 @Transactional,抛出异常之后,事务会自动回滚,数据不会插入到数据库。 规范打印日志的...
  • 程序的bug排查流程总结

    千次阅读 2015-07-17 14:37:47
    只要是人写的程序,不可能没有bug,那么解决bug,将伴随程序员的一生:Ø 只会写代码,但不会排查bug的程序员,只能算是业余程序员Ø 能解决一般bug的,只能算是初级程序员Ø 代码写的质量较好,还能查找较难bug的,...
  • bug排查流程总结

    2016-08-03 10:37:31
    Ø只会写代码,但不会排查bug的程序员,只能算是业余程序员 Ø能解决一般bug的,只能算是初级程序员 Ø代码写的质量较好,还能查找较难bug的,中级程序员 Ø代码写的质量好,注重性能,不但能排查疑难bug的,还能...
  • 以下总结以web测试为例,其他类型测试可参考。 bug排查小技巧提问步入正题之前,我提两个...相信有不少人测试在发现bug之后,立马给开发提了bug,很少去排查bug产生的原因。 在开发准备修复bug的时候,发现测试提的.
  • 文章目录排查程序bug等问题的思路1. 系统环境不一致2. 程序本身有bug,或者存在2.1 本身程序的健壮性不行2.1.1 首先看报错日志的情况,没有报错日志这种单独另外再说2.1.2无报错日志,或者说无明显的系统异常报错日志3....
  • 使用Jest进行批量插入数据的时候,偶尔会出现如下的bug One or more of the items in the Bulk request failed, check BulkResult.getItems() for more information. 起初认为是偶发,就把并发数调小,就再...
  • 最近的一个项目应用了... 因为该Bug的发生需要在运行一段时间后才会发现,排查起来比较困难,因此需要通过测试工具进行一定时间的压力测试以后来重现故障的发生!  下面我将该Bug排查过程介绍一下,以供参考:...
  • 更多详情,请参考bug的常见排查和分析思路以及相关的排查经历
  • java(bug排查流程总结)

    千次阅读 2016-12-12 22:04:42
    Ø只会写代码,但不会排查bug的程序员,只能算是业余程序员 Ø能解决一般bug的,只能算是初级程序员 Ø代码写的质量较好,还能查找较难bug的,中级程序员 Ø代码写的质量好,注重性能,不但能排查疑难bug的,还能解决...
  • 微信支付服务端需要对微信官方的统一下单接口发送请求获取prepayId作为app端调用支付的凭证,如果返回签名错误,首先排查代码层面的错误。方法:使用微信官方的签名算法检验。地址:...
  • java项目线上bug排查

    2019-07-15 23:03:10
    1.收集可供分析的素材(linux系统的指令操作,666为进程号) 监控系统使用情况 top 生成内存dump文件jmap -dump:live,format=b,file=aaa.dump 666 生成线程dump文件 jstack -l 666>...
  • 作为测试人员,和我们最常打交道...在本篇文章中,笔者试图带领大家一起梳理下,为什么测试人员定位问题很重要,以及我们可以使用什么样的定位方法。 一、定位问题的重要性 很多测试人员可能会说,我的职责就是找.
  • 对于线上bug排查神器Arthas,一直没有实际使用过.正好近期碰到一次比较诡异的线上bug,记录一下使用Arthas的排查经过 线上异常 早上实施的同学反馈了客户一个问题,说是单据保存不了.页面只抛出了一个空异常. 由于单据...
  • 记一次 BUG排查过程

    千次阅读 2017-12-18 09:03:17
    这篇文章记录一下这个问题的排查过程以及解决方法。存在问题的程序使用了 C 语言的 Redis 客户端 hiredis 来连接和操作 Redis。由于处于分布式的环境,所以我们使用了 Redis 的事务的特性,以避免多个客户端同时对 ...
  • 本次BUG事件排查为两天,事发是实施在客户处收到一个线上BUG,我们
  • 主要介绍了php5.2的curl-bug 服务器被php进程卡死问题排查,需要的朋友可以参考下
  • 记一次Spark ThriftServer Bug排查

    千次阅读 2019-07-01 15:22:08
    排查过程 顺着堆栈,先搞清楚异常是怎么抛出的: hive.moveFile: 再跟进Hadoop23Shims.isPathEncrypted: 继续往下看DFSClient.getEZForPath: 发现了这个checkOpen: 那么clientRunning什么时候会被...
  • Arthas排查线上服务器CPU100%(阿里开源的Bug利器Arthas)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,949
精华内容 12,779
关键字:

排查bug的方法