我遇到了一个以前从未见过的奇怪问题。现在我有一个 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;
如果我在上面的行放置一个断点并尝试单步进入循环,我将无法执行此操作。调试器立即跳过循环并走到最后。最后我得到了正确的结果,但我无法一步一步地跟踪循环。我的意思是这只是一个简单的例子,而不是真正的任务。我只想知道什么时候什么情况下会出现这种情况?我绝对记得跟踪循环的所有步骤。我使用 Delphi 2010。
最佳答案
循环中的两行代码都可以完全优化掉;您在循环之外对 a
不执行任何操作,因此这两个赋值都是不必要的。优化结束后,编译器离开
for counter := 1 to 10 do
;
实际上,如果那里没有断点,循环也会被删除,因为它什么也不做。
如果您的代码有问题,并且上面的信息没有帮助(在循环运行后使用变量 a
),您需要发布您的真实代码。这段编写的代码很容易分析;实际代码中的问题可能就是这么简单,或者分析起来要复杂得多。
关于delphi - 无法进入for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604640/