通过添加'print'语句进行调试的正确名称是什么

Jer*_*rub 33 debugging printf-debugging

有许多方法可以进行调试,使用调试器就是其中之一,但对于谦虚,懒惰的程序员而言,简单的方法就是在代码中添加一堆打印语句.

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

     ...

     print 'foo is returning:', bar
     return bar
Run Code Online (Sandbox Code Playgroud)

这种调试方式是否有正确的名称?

Sho*_*og9 57

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

用于描述通过插入命令来完成调试工作,这些命令在程序流程的关键点输出或多或少精心选择的状态信息,观察该信息并根据该信息推断出错误.

- printf()debugging @ everything2

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

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

  • 我发现在调试循环中间出现的问题时,printf调试特别有用.浏览日志比观看观看窗口上的内容要快得多. (4认同)

pax*_*977 36

我听说它叫做Caveman Debugging


Bil*_*win 27

我认为以下引用将是适当的:

"最有效的调试工具仍然需要仔细考虑,再加上明智的打印声明."

  • Brian Kernighan,"Unix初学者"(1979)


Dav*_*nds 18

我称之为追踪.


RWe*_*ndi 6

我和我的队友称之为"Oldschool Debuging".


An̲*_*rew 6

我称之为"嗨,妈妈"编程.


Nei*_*ant 6

你的裤子座位调试 :)

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


Ser*_*sta 5

我还从VB人群中听到了“ MessageBox调试”一词,指的是“调试”的这种“风格”。


Don*_*eld 5

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