调试代码的方法(噩梦情况)
我经常在工作中负责调试应用程序。它是一个我们部署到企业的BI应用程序,其中包括测试环境和生产环境。我想知道,基于这些限制,人们是否可以建议任何应用程序/工具/方法: 调试器不能在客户端站点上或本地使用,因为该软件依赖于我们没有测试环境的自定义第三方应用程序。(编辑:说实话,在某些情况下,可以在本地进行调试。如果我们只使用核心代码,那么大多数有问题的代码都位于一个DLL中,该DLL封装了第三方特定的通信:套接字,进程管道,soap调用,更改核心代码行为的自定义逻辑。通常,在为客户实施或增强功能时,我们会在此区域编写新代码。) 实际上,我们的应用程序中没有任何日志记录。没有单元测试。 版本控制只有完整解决方案的1个版本(使用Source Safe 2005)。因此,不可能仅通过单个文件来获得整个解决方案的先前版本。(除非有人知道解决此问题的方法)。 无法本地复制,通常无法在测试环境上复制(测试和生产版本不同的可能性很高)。 客户端使用的版本与来源安全版本不同的可能性很大。这是因为已更新单个文件,这些文件具有针对该特定客户端的嵌入式自定义逻辑。通常会发生的事情是对二进制文件进行更新,这需要更改其他几个二进制文件,但是提交完成后,没有人对此有任何记录或知识。我看到的一个常见错误是客户端环境上的“找不到函数/方法”或“方法调用指定的参数太多/太少”。 这是一个.net VB解决方案 无法在客户端站点上安装任何软件,但可以在本地 我们的应用程序具有极高的可定制性,但是不幸的是,定制逻辑分布在所有类和文件中,从前端一直到数据层,包括基于每个客户端对数据库进行的定制更改。 代码中几乎没有注释。没有有关体系结构的文档。没有有关api的文档。我们唯一拥有的是成百上千的电子邮件链,这些链在某种程度上解释了正在发生的事情。唯一知道该代码的人是最初编写该代码的人,但是他们不再是每个人所说的开发人员,因此他们不会参与其中。 在你说出来之前……是的,我知道;我也想开枪 意大利面条代码,数百个编译器警告以及确实应该修复的破碎多态性并没有帮助,但是我没有发言权。 我遇到的最常见的错误类型是空引用错误,无效的强制转换和缺少的功能/功能签名不匹配。有时我很幸运,事件查看器将记录类,方法和异常消息。它不是最有用的,但还是有帮助。最糟糕的是没有屏幕快照,没有复制步骤的错误,而且是类似于上面提到的一般错误消息。有时,不可能找出它们发生的原因,只能祈祷环境配置不正确,以后环境会消失。 我知道这有点像咆哮,在某种程度上是这样。但是我渴望选择。我还能使用其他方法/工具吗?