调试执行冒险

时间:2011-05-06 11:44:32

标签: java eclipse debugging execution

我调试了我的java代码。它没有给出任何错误。但是当我执行它时(它也没有给出错误,但是)代码没有成功终止。这很有趣。但这甚至可能吗?

3 个答案:

答案 0 :(得分:1)

当然,当调试器引入的减速确实掩盖某些竞争条件时,这通常只适用于多线程或网络代码。

答案 1 :(得分:1)

是的,代码可能在调试时有效,在运行时无效。我现在想到的两个可能的原因是

  • 多线程情况下的并发:如果调试器在断点处停止,多个线程之间的时间可能会发生变化,从而影响行为
  • 在调试时,您可以多次触发代码的某些部分(比没有调试时执行的更多),例如通过toString方法或通过检查或配置一些监视表达式

答案 2 :(得分:1)

是的,您的代码在语法上可以正确(因此可以在没有任何错误的情况下运行)但在语义上可能不正确。

假设如下:

public int add( int operand1, int operand2)
{
   return operant1 - operand2;
}

由于逻辑/实现错误,这将运行没有错误但仍然不正确。

因此,通过其他方式顺利运行代码可能会得到错误的结果。