什么是统计调试?我还没有找到一个清晰,简洁的解释,但这个词当然听起来令人印象深刻.
它只是一个研究主题,还是在某个地方用于实际开发?换句话说:它会帮助我找到程序中的错误吗?
我创建了统计调试,以及多年来各种精彩的合作者.我希望几个月前我注意到你的问题!但如果你仍然好奇,也许这个迟到的答案总比没有好.
在很高的层次上,统计调试是使用程序成功/失败的统计模型来追踪错误的想法.这些统计模型揭示了特定程序行为与运行的最终成功或失败之间的关系.例如,假设您注意到程序中有一个特定的分支有时会离开,有时是正确的.而且你还注意到分支离开的运行很好,但是在分支正确的情况下运行的可能性会降低75%.因此,这里存在统计相关性,值得进一步研究.统计调试形成并自动化查找与失败相关的程序(错误)行为的过程,从而指导开发人员查找错误的根本原因.
回到原来的问题:
它只是一个研究主题,还是在某个地方用于实际开发?
它主要是一个研究课题,但它在"真实"世界中有两种方式:
合作Bug隔离项目的公共部署寻找在Fedora Linux下运行的各种开源程序中的错误.您可以下载预先测试的软件包,每次使用它们时,您都会向我们提供数据以帮助我们找到错误.
微软发布了Holmes,这是.NET统计调试的一个实现.它很好地集成到Visual Studio中,应该是一种非常简单的方法,您可以使用统计调试来帮助您在自己的代码中找到自己的错误.我与Holmes的微软研究院密切合作,这些都是知识如何推出高质量工具的聪明人.
要记住的一个警告:统计调试需要充足的原始数据来构建良好的统计模型.在CBI的公共部署中,原始数据来自真实的最终用户.对于福尔摩斯,我认为微软假设原始数据来自内部自动化单元测试和手动测试.什么不工作是代码没有运行在所有的,或者只有失败的运行,但没有成功的反例.统计调试可以解决好运行和坏运行之间的对比,因此您需要同时提供它.如果你想要没有运行的bug搜索工具,那么你需要某种静态分析.我也对此进行了研究,但这不是统计调试.:-)
我希望这有所帮助,并且不会太久.我很乐意回答任何后续问题.快乐的狩猎!