如果调试行为与正常执行不同,该怎么办?

gue*_*rda 10 java language-agnostic debugging

我有调试会话的问题.我的程序在调试会话中执行得很好但是如果我开始正常运行,它的行为就完全不同了.
问题是,我不能说,为什么它的行为不同.

一个可能的原因是执行时间较慢,因为你总是要按F6或左键.
我试图插入,Thread.sleep(1000);但我没有得到导致不同行为的指令.

那么:什么是提示,最佳实践来了解为什么它在调试会话中的行为如此不同?

Aar*_*lla 11

两种解决方案

a)使用穷人的调试器(打印到控制台)或使用日志框架.发生错误后,分析输出.

b)编写试图重现问题的测试用例.即使你不能这样找到它,这将清理你的代码,有时解决问题.


pmr*_*pmr 6

您可能会观察到只有在没有调试语句减慢执行时才会出现的竞争条件.从审查您的线程模型开始并注意任何可能的锁定可能会有所帮助.