有许多方法可以进行调试,使用调试器就是其中之一,但对于谦虚,懒惰的程序员而言,简单的方法就是在代码中添加一堆打印语句.
即
def foo(x): print 'Hey wow, we got to foo!', x ... print 'foo is returning:', bar return bar
这种调试方式是否有正确的名称?
是的 - 它被称为printf()
调试,以无处不在的C函数命名:
用于描述通过插入命令来完成调试工作,这些命令在程序流程的关键点输出或多或少精心选择的状态信息,观察该信息并根据该信息推断出错误.
- printf()debugging @ everything2
其他语言的本地用户毫无疑问通过可用于其编码平台的默认print/log /或trace命令来引用它,但我听说过"printf()"名称用于以其他语言引用此技术可能这是由于它的历史:虽然BASIC和FORTRAN具有基本但可维护的PRINT
命令,但C通常需要更多的工作来格式化各种数据类型:到目前为止printf()
(通常仍然是)最方便的方法,提供许多内置格式选项.它的堂兄,接受另一个参数,即要写入的流:这允许小心的"调试器"将诊断信息定向到(可能自身重定向到日志文件),同时保持程序输出不被破坏.fprintf()
stderr
虽然现代调试软件的用户经常看不起,但printf()调试仍然证明自己是不可或缺的:用于Firefox网络浏览器的广受欢迎的FireBug工具(以及现在可用于其他浏览器的类似工具)是围绕控制台窗口构建的.网页脚本可以记录包含格式化数据的错误或诊断消息.
我听说它叫做Caveman Debugging
我认为以下引用将是适当的:
"最有效的调试工具仍然需要仔细考虑,再加上明智的打印声明."
Brian Kernighan,"Unix初学者"(1979)
我称之为追踪.
我和我的队友称之为"Oldschool Debuging".
我称之为"嗨,妈妈"编程.
你的裤子座位调试 :)
当你在嵌入式系统上时,当你处于最前沿时,你编写的语言还没有调试器,当你的调试器表现得很奇怪并且你想要恢复一些理智,你想要要理解多线程代码中的重入是如何工作的,....
我还从VB人群中听到了“ MessageBox调试”一词,指的是“调试”的这种“风格”。
与探索性编程一样,我喜欢称之为探索式调试.当调试器的功能不足以检查程序中的复杂类型,或单独调用辅助函数,或者您只是不了解直接使用所述功能的错误时,就会出现这种情况.