什么是统计调试?我还没有找到清晰、简洁的解释,但这个词听起来确实令人印象深刻。
它只是一个研究课题,还是在某处用于实际开发?换句话说:它会帮助我找到程序中的错误吗?
最佳答案
多年来,我与各种出色的合作者一起创建了统计调试。我希望我几个月前就注意到了你的问题!但如果你仍然好奇,也许这个迟到的答案总比没有好。
在非常高的层次上,统计调试是使用程序成功/失败的统计模型来跟踪错误的想法。这些统计模型揭示了特定程序行为与运行的最终成功或失败之间的关系。例如,假设您注意到程序中有一个特定的分支,有时向左,有时向右。而且您还注意到,在分支向左运行的地方运行良好,但在分支向右运行的地方运行崩溃的可能性要高 75%。所以这里有一个统计相关性,可能值得更仔细地研究。统计调试使查找与故障相关的程序(错误)行为的过程正式化并自动化,从而引导开发人员找到错误的根本原因。
回到你最初的问题:
Is it just a research topic, or is it being used somewhere, for actual development?
它主要是一个研究课题,但它以两种方式存在于“真实”世界中:
要记住的一个警告:统计调试需要充足的原始数据来构建良好的统计模型。在 CBI 的公开部署中,原始数据来自真实的最终用户。对于 Holmes,我认为 Microsoft 假定原始数据将来自内部自动化单元测试和手动测试。根本没有运行的代码是行不通的,或者只有运行失败但没有成功的反例的代码。统计调试通过好的和坏的运行之间的对比来工作,因此您需要同时提供两者。如果您想要无需运行的错误搜索工具,那么您将需要某种静态分析。我也对此进行了研究,但这不是统计调试。 :-)
我希望这会有所帮助,而且不会太长。我很乐意回答任何后续问题。愉快的错误狩猎!
关于debugging - 什么是统计调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505907/