2011-05-31 56 views
2

我的Delphi開始過熱CPU。一旦我啓動Delphi,它將爲自己開發一個完整的核心,並且冷卻器開始非常努力地工作。有什麼竅門可以解決這個問題?德爾福XE需要一個完整的核心(100%的CPU利用率)

我知道Stack Overflow這裏的一些人如果一起使用'Delphi'和'bug'這兩個字,就會開始釋放熱量,但這是一個非常討厭的bug,因爲它會浪費很多能量(特別是當在電池上),並會由於過熱而使電腦過早老化。


更新:

這個問題似乎只有激活的標籤是一個項目(dproj)文件。只要我切換到另一個文件(pas),CPU就會回到0%-1%。它發生在任何dproj文件中,但只有IDE在屏幕上可見時纔會發生(非最小化爲任務欄)。所以這顯然是一個渲染錯誤。


更新:

看起來像沃倫·P具有找到一種方法來產生類似的錯誤。看到他的答案。


更新:

我所看到的問題也出現在用一個非常大的PAS單位,但我讓德爾福IDE窗口背景(未使用),3-5分鐘後出現的最大CPU使用率。我可以通過最小化窗口到任務欄或切換到另一個IDE選項卡來解決此問題。

+1

啓動後無限期地繼續嗎? – 2011-05-31 09:22:06

+2

任何.dproj文件,或只是一個特定的? – 2011-05-31 10:45:14

+1

嗨布魯斯。好問題。請參閱(第二次)更新。 – Ampere 2011-05-31 10:47:25

回答

4

我發現了一種非常像您的問題重現問題的方法。創建一個新的Delphi項目,並添加到.DPR(主要項目來源),包含這樣不會解析某些代碼的ifdef條件...

program IdeTestProject1; 
{$ifdef FOO} 
bar 
{$endif} 

uses 
    Forms, 
    Unit1 in 'Unit1.pas' {Form1}, 
    Unit2 in 'Unit2.pas' {Form2}, 
    Unit3 in 'Unit3.pas' {Form3}, 
    Unit4 in 'Unit4.pas' {Form4}, 
    Unit5 in 'Unit5.pas' {Form5}, 
    Unit6 in 'Unit6.pas' {Form6}; 

{$R *.res} 

begin 
    Application.Initialize; 
    Application.MainFormOnTaskbar := True; 
    Application.CreateForm(TForm1, Form1); 
    Application.CreateForm(TForm2, Form2); 
    Application.CreateForm(TForm3, Form3); 
    Application.CreateForm(TForm4, Form4); 
    Application.CreateForm(TForm5, Form5); 
    Application.CreateForm(TForm6, Form6); 
    Application.Run; 
end. 

所以我的建議是,你發現所有條件編譯指令和其他複雜語法,包括直接在DPR中的任何功能或代碼,並將其移至另一個單元。無論是代碼完成,錯誤洞察還是其他一些功能都無情地重新解析這個單元,這就會導致性能問題。

+0

所以,我並不瘋狂。真的發生了!謝謝沃倫。 – Ampere 2011-06-01 21:31:53

+1

這是問題嗎?如果是這樣,你應該接受它。 – 2011-06-01 23:31:07

+0

所以我的答案可能是正確的(關閉代碼洞察/錯誤洞察),但被刪除... – Andreas 2011-06-02 11:40:12

7

嘗試移除您可能添加的Delphi IDE的任何插件。嘗試查看它是否僅發生在特定項目或源文件上。使用調試器打入Delphi進程,看看調用堆棧是什麼。這樣你可以看到Delphi的哪個部分在旋轉CPU。

+0

請參閱更新。 – Ampere 2011-05-31 09:28:34

+4

+1爲「嘗試刪除任何插件」。 – 2011-05-31 09:57:51

+1

我的Delphi在兩週前安裝(第一次)。我直到完成移植代碼(今天)才安裝了插件。 – Ampere 2011-06-01 08:53:50

1

我有「進程監視器」實用程序並檢查了bds.exe操作。我發現更多.dcu被處理。 (打開文件,讀取文件,關閉文件)。 要解決我已經刪除了所有.dcu