无法进入for循环

Mik*_*yev 2 delphi debugging for-loop

我遇到了一个我以前从未见过的奇怪问题.现在我有一个for循环:

var
 a,counter: byte;
begin
  a:=0; 
   for counter := 1 to 10 do//I put a breakpoint at this line
   begin
     a:=a*5;
     a:=a+counter;
   end;
end;
Run Code Online (Sandbox Code Playgroud)

如果我在上面的行放置一个断点并尝试进入循环,我就无法做到.调试器立即跨越循环并结束.最后我得到了正确的结果,但我不能一步一步地遵循循环.我的意思是这只是一个简单的例子而不是真正的任务.我只是想知道这种情况何时发生?我绝对记得跟踪循环的所有步骤.我使用Delphi 2010.

Ken*_*ite 10

循环中的两行代码都可以完全优化掉; 你a在循环之外什么也不做,所以这两个任务都是不必要的.优化后,编译器将离开

for counter := 1 to 10 do 
  ;
Run Code Online (Sandbox Code Playgroud)

实际上,如果你没有断点,那么循环也会被删除,因为它什么都不做.

如果您的代码出现问题,并且上面的信息没有帮助(a在循环运行后使用变量),您需要发布您的实际代码.这个组成的代码非常清晰可分析; 实际代码中的问题可能很简单,或者分析起来要复杂得多.

  • "如果他们以后会被使用" - 但他们不是他们.;-) (3认同)
  • @LURD,在发布的代码中,循环外没有使用`a`,因此分配给它的任何值*都是*100%无意义的,所以不需要运行循环.请阅读我写的内容 - 我说"在发布的代码中".我还建议Mikayil发布**真正的**代码.其实,在代码发布`了`不可能是其他任何地方,因为`var`,`begin`和`end`范围限制为只能在问题中的代码. (3认同)

ain*_*ain 7

请参阅关闭优化是否有所不同 - 在项目选项中 - >编译 - >代码生成.

  • 我经常在调试时关闭优化,以便我可以获得已经由编译器优化的变量的值. (2认同)