有许多方面的做调试,采用一个调试器是一个,而是简单的一个不起眼的,懒惰,程序是,只是添加了一堆的打印的发言给你的代码。

 def foo(x):
     print 'Hey wow, we got to foo!', x

     ...

     print 'foo is returning:', bar
     return bar

是否有一个合适的名字对于这种风格的调试呢?

有帮助吗?

解决方案

是的 - 它被称为 printf() debugging ,以无处不在的C函数命名:

  

用于   描述完成的调试工作   插入输出更多或更多的命令   精心挑选的地位   关键点的信息   程序流程,观察   信息并推断出什么是错的   基于该信息。

- printf()debugging @ everything2

其他语言的本地用户毫无疑问通过可用于其编码平台的默认print / log /或trace命令来引用它,但我听说过“printf()”。用于在除C之外的许多语言中引用此技术的名称。也许这是由于它的历史:虽然BASIC和FORTRAN具有基本但可维护的 PRINT 命令,但C通常需要更多的工作来格式化各种数据类型: printf()是(并且通常仍然是)到目前为止为此目的最方便的方法,提供了许多内置的格式化选项。它的堂兄 fprintf()采用另一个参数,即要写入的流:这允许小心的“调试器”。将诊断信息定向到 stderr (可能自身重定向到日志文件),同时保持程序输出不被破坏。

尽管现代调试软件的用户经常看不起,但printf()调试仍然证明自己是不可或缺的:用于Firefox网络浏览器的广受欢迎的FireBug工具(以及现在可用于其他浏览器的类似工具)是围绕控制台构建的网页脚本可以记录错误的窗口或包含格式化数据的诊断消息。

其他提示

我听说它叫做穴居人调试

我认为下面的报价,将是恰当的:

"最有效的调试工具仍然是小心认为,加明智地放打印的发言。"

  • 布莱恩Kernighan,"Unix对于初学者"(1979年)

我称之为追踪。

我和我的队友称之为“Oldschool Debuging”。

调整裤子的位置:)

当你在嵌入式系统上时,当你处于最前沿时,你所编写的语言还没有调试器,当你的调试器表现得很奇怪而且你想恢复一些理智时,并且您想要了解多线程代码中的重入是如何工作的,....

探索性编程一样,我喜欢称之为探索性调试。当调试器的功能不足以检查程序中的复杂类型,或单独调用辅助函数,或者您只是不了解直接使用所述功能的错误时,就会出现这种情况。

我称之为“嗨,妈妈”。编程。

我也从VB人群中听到了" MessageBox debugging" 一词来引用'调试'的'风格'。

我嵌入式系统通常是检测代码的唯一方法。不幸的是,打印需要时间并影响系统的实时流程。所以我们也通过“追踪”来进行检测。其中有关系统状态(函数入口退出等)的信息被写入内部缓冲区以便稍后转储和解析。真正的嵌入式程序员可以通过闪烁LED进行调试;)

我听说过“ Gutenberg调试”正在使用,以纪念发明印刷机的人

我会简单地称之为“记录”。

我通常将其称为追踪。

请注意,在Visual Studio中,您可以设置仅添加跟踪的断点。右键单击断点,选择“when hit ...”并选中“打印邮件”选项。

此外,在.Net中,您可以添加调试语句(我认为它实际上是Debug.WriteLine)以输出到控制台。这些语句仅包含在调试版本中 - 编译器会在您执行发布版本时自动将它们遗漏。

经典调试

手动断言?调试器恐惧症?

详细调试!

(良好的日志记录对于调试运行生产系统中的问题非常有价值。许多无用的详细打印语句不是,但是当重要或意外发生时记录一些有趣的东西非常重要。如果你知道如何调试的唯一方法问题在于调试器,如果您为某些用户破坏了您构建的服务但是您无法在本地重现该问题,那么您将发现自己处于相当紧张的位置。)

我一直以“快速和脏调试”这个词来形容它,或者简称为“脏调试”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top