• 调试ccbpm系统的bug个技巧 如何调试asp.net程序导致iis死机问题


    最近ccflow程序在运行的时候经常导致iis死机,单步调试无法找到问题。

    但是退出重新启动vs程序,又可以了。第一次运行没有问题,为此问题,不知道从何地方下手。

    为此我想到了写一个单元测试来测试是否可以,在ccflow上面创建一个单元测试代码。如下

    把default.aspx设置为起始页,执行第1次成功,第2次就失败。

    由此我想到,一定是底层的代码出现错误,而非前端的js导致iis死机的问题。

    我把范围在缩小一次,执行default.aspx ,发现代码出现在第一个发送方法上面。

    BP.WF.Dev2Interface.Node_SendWork("001", workid, 102, "liping");

    进一步缩小范围,就是我们的核心代码 NodeSend() ;的方法,出现问题。因为NodeSend这个方法比较大,所以我在中间写一个了个异常。

    经过测试发现,这个大方法的上部分,没有问题。

    我把剩余代一半代码,在缩小范围一半,在中间部分,增加上

    throw new Exception("err@运行到这里了,刷下一下页面,检查是否出问题,如果出问题就说明,以上代码有问题。");

    这个异常,最后定位到,处理事件的这个方法出问题了。

    用同样的方法,把在方法体中间,加抛出异常,反复几次,终于定位到了,发送邮件的时候导致的问题。

    为了不耽误使用,我暂时注销了他。

    总结:

    1. 遇到类似的问题,需要写一个单元测试,需要找到重现的场景。
    2. 找到重现的场景,就需要采用2分法,把代码体分成一段一段的,然后在去找问题。
    3. 单元测试,是解决问题的最佳办法。
  • 相关阅读:
    JS-OO-数据属性,访问器属性
    下载php扩展笔记
    php字符串笔记
    include、require、include_once和require_once理解
    http协议笔记
    Git中三种文件状态及其转换
    git add 命令
    / 直接用就可以了 想用,需要用\来转义
    $_POST 变量以及$GLOBALS['HTTP_RAW_POST_DATA']
    Python multiprocessing
  • 原文地址:https://www.cnblogs.com/mengjuan/p/12567589.html
Copyright © 2020-2023  润新知