调试

RSS
排序方式

确定性记录与重放
仅关注进程的非确定性操作

本专栏介绍了与确定性记录与重放相关的三项最新研究进展,旨在展示经典用例和新兴用例。越来越多的系统使用较弱形式的确定性记录与重放。本质上,这些系统利用了许多程序执行中存在的确定性,但为了性能原因,有意允许一些非确定性。这种趋势在 GPUReplay 中尤为突出,但在 ShortCut 和 Dora 等系统中也很明显。

作者:Peter Alvaro, Andrew Quinn | 2024 年 9 月 19 日

0 条评论

石刀和熊皮

如果您看看软件工具领域,您会发现大多数开发人员使用开源工具;或者来自最近改革的专有软件之家微软的工具,微软已经意识到其 Visual Studio Code 系统是将人们诱入其平台的好方法;或者最后是苹果,其工具仅供其平台使用。在深度嵌入式、军事和航空航天等专业市场中,存在专有工具,这些工具通常比其开源同类产品差得多,因为此类工具的市场很小但利润丰厚。

作者:George V. Neville-Neil | 2023 年 7 月 18 日

0 条评论

摆脱疯狂之路
调试器和断言

KV 继续咬牙切齿,因为他看到代码中加载了调试语句,如果编写代码的程序员能够对其调试器充满信心并熟练使用,这些语句将完全没有必要。如果一个人足够幸运能够访问一个好的调试器,那么他应该非常感谢他们通常感谢的任何东西,并使用该死的调试器!

作者:George V. Neville-Neil | 2022 年 1 月 31 日

0 条评论

分而治之
二分法的应用和局限性

如果您遇到一种海森堡 bug,它只是偶尔失败,那么二分法就毫无用处。这些微妙的 bug 是最难修复的,也是让我们批判性地思考我们正在做的事情的 bug。定时 bug、分布式系统中的 bug 以及我们在构建日益复杂的软件系统时面临的所有难题,目前还无法通过简单的二分法解决。通常情况下,为一个复杂的问题编写一个可用的二分法测试比在树尖分析问题花费的时间更长。

作者:George V. Neville-Neil | 2021 年 7 月 26 日

0 条评论

调试 Google 分布式系统中的事件
专家如何调试复杂分布式系统中的生产问题

本文介绍了 2019 年对 Google 工程师如何调试生产问题进行的研究结果,包括工程师以不同组合方式有效调试时使用的工具类型、高级策略和低级任务。它考察了用于捕获数据的研究方法,总结了生产调查的常见工程历程,并分享了专家如何调试复杂分布式系统的示例。最后,本文将这项研究的 Google 特性扩展到提供一些您可以在组织中应用的实用策略。

作者:Charisma Chan, Beth Cooper | 2020 年 6 月 6 日

0 条评论

捕捉故障:记录与重放调试方法
与 Robert O’Callahan、Kyle Huey、Devon O’Dell 和 Terry Coatta 的讨论

当 Mozilla 开始开发名为 rr 的记录与重放调试工具时,目标是生产一种实用、经济高效、资源高效的方法,用于捕获 Firefox 浏览器中低频非确定性测试失败。随后的许多工程努力都投入到确保该工具能够以最小的开销兑现这一承诺。然而,出乎意料的是,rr 将在 Mozilla 之外得到广泛使用?而且不仅用于找出难以捉摸的故障,还用于常规调试。

作者:Robert O'Callahan, Kyle Huey, Devon O'Dell, Terry Coatta | 2020 年 3 月 28 日

0 条评论

实践研究:跟踪和调试分布式系统;示例编程
专家策划的 CS 研究精华指南

本期《实践研究》涵盖了分布式系统和编程方法论中的两个令人兴奋的主题。首先,Peter Alvaro 将带领我们参观调试世界上一些最大、最复杂系统(现代分布式系统和服务导向架构)的最新技术。Peter 调查的技术可以揭示分布式调用图的混乱中的秩序。其次,Sumit Gulwani 说明了如何在不显式编写程序的情况下进行编程,而是通过示例合成程序!Sumit 提出的技术允许系统从说明性示例中“学习”程序表示,从而允许非程序员用户创建越来越重要的功能,例如电子表格宏。

作者:Peter Alvaro, Sumit Galwani | 2017 年 3 月 29 日

0 条评论

调试心态
理解学习策略的心理学有助于培养有效的问题解决能力。

软件开发人员将 35-50% 的时间用于验证和调试软件。调试、测试和验证的成本估计占软件开发项目总预算的 50-75%,每年超过 1000 亿美元。虽然工具、语言和环境减少了个人调试任务花费的时间,但它们并没有显着减少调试的总时间,也没有减少调试的成本。因此,过度关注开发过程中消除 bug 是适得其反的;程序员应该拥抱调试作为一种解决问题的练习。

作者:Devon H. O'Dell | 2017 年 3 月 22 日

1 条评论

外包责任
当您的调试器让您失望时,您会怎么做?

尊敬的 KV,我被分配协助一个新项目,并且一直在查看团队在内部 wiki 上放置的无可否认的简略文档。我花了一天左右的时间盯着似乎是他们打算集成到他们一直在构建的系统中的开源项目的长列表,但我找不到描述他们原始工作的地方。

作者:George Neville-Neil | 2014 年 7 月 1 日

2 条评论

肆意妄为的调试行为
保持您的调试消息清晰、有用且不烦人。

尊敬的 KV,为什么向其程序添加日志记录的人缺乏区分其日志消息的创造力?如果它们都说同样的事情——例如,DEBUG——就很难说发生了什么,甚至很难说为什么之前的程序员首先添加了这些语句。

作者:George Neville-Neil | 2011 年 10 月 24 日

1 条评论

在实时系统上调试
这更多的是一个社会问题,而不是技术问题。

我一直在尝试调试工作系统上的一个问题,但是运行我们生产系统的控制狂不想让我访问始终发生 bug 的系统。我无法在桌面上的测试环境中重现该问题,但每天该 bug 都会在多个生产系统上发生。

作者:George Neville-Neil | 2011 年 9 月 13 日

1 条评论

端口短缺
调试一个短暂的问题

我一直在调试一个网络问题,这个问题应该是一个简单的网络代码片段。我们有一个小型服务器进程,它侦听来自我们数据中心中所有其他系统的命令,然后将命令分发到其他服务器运行。对于发出的每个命令,客户端都会建立一个新的 TCP 连接,发送命令,然后在我们的服务器确认命令后关闭连接。

作者:George Neville-Neil | 2010 年 8 月 24 日

2 条评论

使用跟踪增强调试
模拟器开发中使用的一项基本技术是对任何程序员工具箱的有用补充。

创建模拟器来运行旧程序是一项艰巨的任务。您需要透彻了解目标硬件以及模拟器要执行的原始程序的正确功能。除了功能正确之外,模拟器还必须达到以原始实时速度运行程序的性能目标。实现这些目标不可避免地需要大量的调试。这些 bug 通常是模拟器本身中的细微错误,但也可能是对目标硬件的误解或原始程序中实际已知的 bug。(原始程序的二进制数据也可能变得微妙地损坏或不是预期的版本。)

作者:Peter Phillips | 2010 年 3 月 31 日

0 条评论

调试设备
调试故障硬件的正确方法是什么?

我建议拿一把非常锋利的刀,随意切割电路板走线,直到东西要么工作,要么闻起来很奇怪!我想您问的问题与我在另一专栏中使用“changeineer”一词时所问的问题不同。我认为您有一个实际发生故障的硬件,并且您已经将之前的三个版本连同包含隐晦提及法律诉讼的恶劣信件寄回给制造商,如果他们继续向您发送损坏的产品。

作者:George Neville-Neil | 2009 年 1 月 8 日

0 条评论

又一天,又一个 Bug
我们询问读者他们使用哪些工具来消除 bug。以下是他们所说的。

作为本期程序员工具专题的一部分,Queue 的我们在网上进行了一项关于调试主题的非正式投票。我们请您告诉我们您使用的工具以及您如何使用它们。我们还收集了一些关于那些难以追踪的 bug 的故事,这些 bug 有时会让我们想到从事另一种职业。

作者:Queue Readers | 2003 年 10 月 2 日

0 条评论

© . All rights reserved.