我正在使用Eclipse Helios调试RCP(多线程GUI应用程序)。
当我执行相同的方法时,我在运行模式下得到一个空指针异常,但是在
中调试模式,我没有得到任何异常。我认为它在调试模式下工作正常。
空指针异常不在调试模式下,但仅在运行模式下..
请帮帮我。这可能是一个多线程问题。
答案 0 :(得分:2)
运行和调试模式下的不同行为并不罕见。有一天我花了一天时间才发现toString()有副作用。调试器在显示变量时调用此方法。差异的另一个原因是并发性。调试器中的执行顺序可能与运行模式不同。
答案 1 :(得分:1)
您可以在运行模式下NPE发生的行中添加断点。您需要设置断点属性以暂停整个虚拟机。
然后调试程序,当线程尝试执行该行时,整个vm将被暂停。您可以让其他不尝试执行该行的线程恢复,第二个线程也将在该行上暂停。您可以分析代码的缺陷。
答案 2 :(得分:0)
请检查您是否使用过 for each 来遍历集合。集合的遍历顺序可能在run和debug时不一致,导致结果不同。