Debugging 通过添加';进行调试的正确名称是什么;打印';声明

Debugging 通过添加';进行调试的正确名称是什么;打印';声明,debugging,printf-debugging,Debugging,Printf Debugging,调试有很多种方法,使用调试器就是其中之一,但对于谦逊、懒惰的程序员来说,最简单的方法就是在代码中添加一堆打印语句 i、 e 这种类型的调试有合适的名称吗?是-它被称为printf()调试,以无处不在的C函数命名: 使用 描述由以下人员完成的调试工作: 插入输出更多或更多信息的命令 不太仔细选择的身份 关键点信息 程序流程,观察到 信息和推断错误 基于这一信息 -- 其他语言的本地用户无疑是通过默认的print/log/或trace命令来引用它的,这些命令可用于他们选择的编码平台,但我听说过“pr

调试有很多种方法,使用调试器就是其中之一,但对于谦逊、懒惰的程序员来说,最简单的方法就是在代码中添加一堆打印语句

i、 e


这种类型的调试有合适的名称吗?

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

使用 描述由以下人员完成的调试工作: 插入输出更多或更多信息的命令 不太仔细选择的身份 关键点信息 程序流程,观察到 信息和推断错误 基于这一信息

--

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


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

我和我的团队称之为“老派调试”。

我称之为跟踪。

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

我也从VB人群中听到术语“MessageBox调试”指的是这种“调试”的“风格”。

与我喜欢称之为探索性调试的意思相同。当调试器功能不够强大,无法检查程序中的复杂类型,或者无法单独调用帮助函数,或者您对某个bug了解不够,无法直接使用上述功能时,就会出现这种情况。

我通常将其称为跟踪


请注意,在VisualStudio中,您可以设置断点,只需添加跟踪即可。右键单击断点,选择“when hit…”并选中“打印消息”选项。

我听说它被称为“Caveman调试”

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

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

经典调试

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

详细调试

你的座位:)


当您在嵌入式系统上,当您处于最前沿,并且您所使用的语言还没有调试器时,当您的调试器行为异常,您希望恢复一些理智时,您希望了解重入在多线程代码中是如何工作的,…。

(良好的日志记录对于在运行的生产系统中调试问题非常有价值。许多无用的详细打印语句不是,但是在发生重要或意外的事情时记录一些有趣的内容是非常重要的。如果你知道如何调试问题的唯一方法是使用调试器,那么你会发现自己陷入困境当您为某些用户构建的服务出现故障,但您无法在本地重现问题时,这是一个非常棘手的问题。)

我一直都知道这是一个术语“快速而肮脏的调试”,或者简而言之就是“肮脏的调试”。

我想下面的引语应该是恰当的:

“最有效的调试工具仍然是仔细思考,再加上明智地放置打印语句。”

-Brian Kernighan,“Unix初学者”(1979年)


我听说使用了“古腾堡调试”,以表示对的敬意。

我将其简单地称为“日志记录”

我记得当我进行Flash ActionScript编程时,trace()函数用于这个。AFAIK,这个(或者可能是“跟踪调试”)是它的原始和正确的术语。这个术语至少可以追溯到60年代中期(在ActionScript之前).我喜欢“调试恐惧症”如何从舌头上消失。+1我觉得奇怪的是,当追踪是评估在野外如何达到无效状态的唯一有用手段时,有多少人认为这已经过时了。这是一种古老的技术,远远早于下面提到的大多数语言或它们的狭隘名称。IIRC,最初被称为“跟踪”或“跟踪调试”,至少在60年代末70年代初。我认为奇怪的是,人们看不起这种技术,而它是调试具有实时约束的并发程序(例如UI交互)的唯一有效解决方案“是的,眨眼摩尔斯电码,这样你就可以得到比“派克船长的椅子”灯更多的信息。这样做了。我在一本Objective-C的书中看到了这个词,它似乎是作者编造的,但它至少是一本多产的书,可以在某种程度上向Objective-C的用户传播
 def foo(x):
     print 'Hey wow, we got to foo!', x

     ...

     print 'foo is returning:', bar
     return bar