调试

RSS
排序方式

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

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

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

2 条评论

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

作为本期关于程序员工具专题的一部分,Queue 决定就调试主题进行一次非正式的 Web 投票。我们请您告诉我们您使用的工具以及您如何使用它们。我们还收集了一些关于那些难以追踪的 Bug 的故事,这些 Bug 有时会让我们考虑换个职业。

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

0 条评论

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

我建议拿一把非常锋利的刀,随机切割电路板上的走线,直到东西要么能工作,要么闻起来很奇怪!我猜您不是在问另一个专栏中让我使用“changeineer”这个词的同一个问题。我认为您有一块实际发生故障的硬件,并且您已经将之前的三个版本寄回给制造商,并附上了措辞严厉的信件,其中暗含如果他们继续向您发送损坏的产品,将采取法律行动。

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

0 条评论

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

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

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

0 条评论

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

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

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

1 条评论

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

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

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

0 条评论

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

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

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

0 条评论

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

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

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

0 条评论

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

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

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

0 条评论

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

亲爱的 KV,我被分配到一个新项目帮忙,并且一直在查看团队放在内部 Wiki 上的公认简陋的文档。我花了一天左右的时间盯着似乎是一长串开源项目,他们打算将这些项目集成到他们一直在构建的系统中,但我找不到在哪里描述了他们的原创作品。

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

2 条评论

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

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

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

0 条评论

石刀和熊皮

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

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

0 条评论

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

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

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

1 条评论

捕获故障:调试的记录与回放方法
与 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 条评论

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

亲爱的 KV,为什么向程序添加日志记录的人缺乏区分其日志消息的创造力?如果它们都说同样的话——例如,DEBUG——就很难分辨发生了什么,甚至不知道之前的程序员最初为什么要添加这些语句。

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

1 条评论

© . All rights reserved.