debugging - 什么是统计调试?

标签 debugging statistics code-analysis

什么是统计调试?我还没有找到清晰、简洁的解释,但这个词听起来确实令人印象深刻。

它只是一个研究课题,还是在某处用于实际开发?换句话说:它会帮助我找到程序中的错误吗?

最佳答案

多年来,我与各种出色的合作者一起创建了统计调试。我希望我几个月前就注意到了你的问题!但如果你仍然好奇,也许这个迟到的答案总比没有好。

在非常高的层次上,统计调试是使用程序成功/失败的统计模型来跟踪错误的想法。这些统计模型揭示了特定程序行为与运行的最终成功或失败之间的关系。例如,假设您注意到程序中有一个特定的分支,有时向左,有时向右。而且您还注意到,在分支向左运行的地方运行良好,但在分支向右运行的地方运行崩溃的可能性要高 75%。所以这里有一个统计相关性,可能值得更仔细地研究。统计调试使查找与故障相关的程序(错误)行为的过程正式化并自动化,从而引导开发人员找到错误的根本原因。

回到你最初的问题:

Is it just a research topic, or is it being used somewhere, for actual development?



它主要是一个研究课题,但它以两种方式存在于“真实”世界中:
  • public deployment of the Cooperative Bug Isolation Project寻找在 Fedora Linux 下运行的各种开源程序中的错误。您可以 download pre-instrumented packages每次您使用它们时,您都在向我们提供数据以帮助我们找到错误。
  • 微软已发布 Holmes, an implementation of statistical debugging for .NET .它很好地集成到 Visual Studio 中,应该是一种非常简单的方法,您可以使用统计调试来帮助您在自己的代码中找到自己的错误。我曾与 Microsoft Research on Holmes 密切合作,他们都是非常聪明的人,知道如何推出高质量的工具。

  • 要记住的一个警告:统计调试需要充足的原始数据来构建良好的统计模型。在 CBI 的公开部署中,原始数据来自真实的最终用户。对于 Holmes,我认为 Microsoft 假定原始数据将来自内部自动化单元测试和手动测试。根本没有运行的代码是行不通的,或者只有运行失败但没有成功的反例的代码。统计调试通过好的和坏的运行之间的对比来工作,因此您需要同时提供两者。如果您想要无需运行的错误搜索工具,那么您将需要某种静态分析。我也对此进行了研究,但这不是统计调试。 :-)

    我希望这会有所帮助,而且不会太长。我很乐意回答任何后续问题。愉快的错误狩猎!

    关于debugging - 什么是统计调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505907/

    相关文章:

    ruby 调试器直接进入一个 block ?

    javascript - 为 ipad mini 调试 wordpress

    r - 使用 R 来估计具有底层马尔可夫过程的有限混合模型

    python - 在 Python 项目中搜索递归函数

    c - 生成数据通信流图(C程序,profiling)

    debugging - 在 PhpStorm 中设置调试变量列表的顺序

    iOS App 退出时崩溃,如何调试?

    java - 确定 F 检验的临界 F 值时确定 Beta 函数

    在给定完整历史记录的情况下计算球队赢得体育比赛几率的算法

    python - 在您的应用程序中识别 “sensitive”代码