我记得当我在上一些 C 编程类(class)时,一位老师曾经建议我使用 printf
来观察我试图调试的程序的执行情况。这个程序有一个段错误,我现在不记得原因了。我听从了他的建议,段错误消失了。幸运的是,一个聪明的 TA 告诉我调试而不是使用 printf
s。在这种情况下,这是一件很有用的事情。
所以,今天我想向某人展示使用 printf
可能会隐藏一个错误,但我找不到那个有这个奇怪错误的旧代码(功能?嗯)。
问题:你们中有人也遇到过这种行为吗?我怎样才能重现这样的东西?
编辑:
我看到我的问题部分将我的观点指向“使用 printf
是错误的”。我并不是这么说的,我不喜欢极端的意见,所以我正在编辑一些问题。我同意 printf
是一个很好的工具,但我只是想重新创建一个案例,其中 printf
使段错误消失,因此证明必须小心。
最佳答案
在某些情况下,添加 printf
调用会改变代码的行为,但在调试时也会发生同样的情况。最突出的例子是调试多线程代码,其中停止线程的执行可能会改变程序的行为,因此您正在寻找的错误可能不会发生。
所以使用 printf
语句确实有正当理由。是 debug 还是 printf
应该根据具体情况来决定。请注意,无论如何这两者并不排斥 - 您可以调试代码,即使它包含 printf
调用 :-)
关于c - 教育示例表明有时 printf 作为调试可能会隐藏错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3110711/