在最近的一次采访中,我被问到以下问题:
你的程序中有一个错误,在尝试通过插入printf,console.log,System.out.println,echo等语句来调试它之后,错误消失了。怎么会发生这种情况?
我的答案如下:
System.out.println(foo.somethingWithSideEffects())
面试官说这些不是唯一可能发生这种情况的方法,我想不出任何其他方式只需添加printf等就可以“修复”程序中的错误。
还有什么其他因素可能导致这种情况发生?
答案 0 :(得分:5)
最令人想到的是,调试代码可以改变代码的时间,如果正在调试的代码中存在竞争条件,这可能很重要。尝试调试在这样检查时消失的竞争条件可能会非常令人沮丧。
答案 1 :(得分:0)
由于内存溢出可能会发生这种情况,或者在程序运行时可能会出现系统中断。如果您无法真正附加调试,那么您可能会编写事件日志但它应该是我认为的最后一种方式