调试仅生产错误的过程是什么?

Pop*_*ops 14 debugging production-environment

让我先说一下我对这个话题如此无知,我甚至都不知道这个问题是否有客观答案.如果它最终"不",我将删除或投票关闭帖子.

这是场景:我刚刚写了一个小小的Web服务.它适用于我的机器.它适用于我的团队负责人的机器.据我所知,它可以在除生产服务器之外的每台机器上运行.生产服务器在发生故障时吐出的例外来自第三方JAR文件,并且信息很少.我在网上搜索了几个小时,但没有提出任何有用的东西.

那么追踪仅在生产机器上发生的问题的程序是什么?是否有标准方法,或者可能是类别/系列工具?

启发这个问题的错误已经得到修复,但这更多是因为好运而不是一个可靠的调试方法.我问这个问题以备将来参考.

编辑:
到目前为止,答案似乎总结为一个词:伐木.记录的一个问题是它需要预先考虑.如果在现有系统中出现日志不佳的情况,或者客户端担心敏感数据并且首先不想在系统中使用大量日志记录系统,会怎么样?

一些相关问题:
在生产系统中测试帐户和产品在
生产代码/服务器上运行测试

Dev*_*olo 9

除了日志记录,这是非常宝贵的,以下是我自己和我的同事多年来使用的一些其他技术...回到我们无法访问的客户端计算机上的16位窗口.(我是否与自己约会?)当然,并非一切都可以/将会奏效.

  • 分析您看到的任何和所有行为.
  • 如果可能的话,重现它,重现它.
  • 桌面检查,浏览您怀疑的代码.
  • 橡皮鸭与团队成员以及对代码很少或根本不熟悉的人.你必须向某人解释的东西越多,你发现某些东西的机会就越大.
  • 不要感到沮丧.休息5-10分钟.快速步行穿过建筑物/街道/无论如何.那个时候不要考虑问题.
  • 倾听你的直觉.


kgi*_*kis 6

这是最困难的调试方案之一.答案取决于生产系统的细节.它是一个你完全控制它的系统吗?或者它是否安装在客户端的计算机上,您需要通过多次电话呼叫才能访问日志文件或修改配置参数?

我相信大多数人会同意调试它的最有效方法是使用日志记录.您需要主动操作并添加尽可能多的日志记录信息.但是,您必须能够启用和禁用按需记录.生产系统中的大量调试日志可能会破坏性能.出于同样的原因,您需要只能启用日志记录的特定部分.创建记录打印输出的逻辑组,并仅启用您认为可以为您提供最相关信息的组.