程序冻结但CPU利用率为零

时间:2017-02-06 11:36:26

标签: delphi delphi-xe7

有时我的程序冻结了。如果我点击“暂停程序”,它会显示我:

ntdll.RtlUserThreadStart:
773301C4 89442404         mov [esp+$04],eax
773301C8 895C2408         mov [esp+$08],ebx
773301CC E9E9960200       jmp $773598ba
773301D1 8DA42400000000   lea esp,[esp+$0000]
773301D8 8DA42400000000   lea esp,[esp+$0000]
773301DF 90               nop 

'调用堆栈'窗口是空的!

按F8三次,程序跳转到

ntdll.RtlInitializeExceptionChain:
7735989F 8BFF             mov edi,edi

我无法按需复制,但我每天都会看到一次问题(可能更少?) 编译器/调试器以32位运行。

知道这是否是调试器问题?我在过去遇到类似的事情:有时当你从Delphi应用程序运行外部应用程序时,调试器会冻结。这是Delphi XE7的文档错误。所以,我在想,也许这是一个类似/相关的错误?

1 个答案:

答案 0 :(得分:1)

我在这里取得进步!我在我的程序中发现了类似的问题。当我尝试在自定义列表框中加载大文本(超过100000)时出现冻结,因为此代码:

MyListBox.Items.Text:= xxx;


procedure TMyListBox.LBADDSTRING(var M: TMessage);   { This makes the control slow when I work with 100000 lines }
begin
 inherited;
 if Assigned(FOnChange)
 then FOnChange(Self, lbAdded);
end;

执行点为每一行(100000次)运行LBADDSTRING。所以,似乎冻结了。

奇怪的是,如果我暂停程序,Delphi无法准确显示我的程序的执行点(我检查了所有5个线程)。所以,这一切最终都是Delphi调试器的缺陷。