教育示例显示有时printf作为调试可能隐藏错误

我记得当我在某些C编程课程中时,老师曾建议我使用printf来观察我试图调试的程序的执行情况.这个程序有一个分段错误,目前我不记得了.我听从他的建议,分段错误消失了.幸运的是,聪明的TA告诉我调试而不是使用printfs.在这种情况下,这是一件有用的事情.

所以,今天我想向某人展示使用printf可能隐藏错误,但我找不到那个有这个奇怪错误的旧代码(功能?嗯).

问题:你们有没有遇到过这种行为?我怎么能重现这样的东西?

编辑:

我看到我的问题部分将我的观点定位为“使用printf是错误的”.我并不是那么说,我不喜欢采取极端的意见,所以我正在编辑一些问题.我同意printf是一个很好的工具,但我只想重新创建一个printfs使分段错误消失的情况,因此,证明一定要小心.

有些情况下,添加printf调用会改变代码的行为,但也有一些情况下,调试会执行相同的操作.最突出的例子是调试多线程代码,其中停止执行线程可能会改变程序的行为,因此您可能不会发生您正在寻找的错误.

所以使用printf语句确实有正当理由.是否调试或printf应根据具体情况决定.请注意,这两者并不是独占的 – 你可以调试代码,即使它包含printf调用:-)

相关文章
相关标签/搜索