2016-09-19 47 views
0

在調試Firemonkey應用程式(反彈球),一分鐘左右成球周圍移動,這條消息開始傾出到事件日誌:Firemonkey「否調試信息」

模塊負載:D3DCOMPILER_47.dll 。沒有調試信息。基地地址:$ 14D50000。過程bo.exe(13824) 線程開始:線程ID:14268.過程bo.exe(13824)

它使調試模式近乎無用。這是一個德爾福建築師試用版,空格式的Firemonkey應用程序。我想也許這是由於它是一個試用版本。

在這種情況發生之前,我確實看到了大約三個線程。我不自覺地啓動任何線程,但我假設一個用於用戶界面,一個是...對於調試器?我不知道。這裏有一個有代表性的例子:

Module Load: imagehlp.dll. No Debug Info. Base Address: $74A30000. Process bo.exe (19228) 
Module Load: GPAPI.dll. No Debug Info. Base Address: $612D0000. Process bo.exe (19228) 
Module Load: CRYPTNET.dll. No Debug Info. Base Address: $60900000. Process bo.exe (19228) 
Module Load: IPHLPAPI.DLL. No Debug Info. Base Address: $739B0000. Process bo.exe (19228) 
Module Load: WINNSI.DLL. No Debug Info. Base Address: $72B40000. Process bo.exe (19228) 
Module Load: NSI.dll. No Debug Info. Base Address: $74940000. Process bo.exe (19228) 
Module Load: ltc_game32.dll. No Debug Info. Base Address: $11D60000. Process bo.exe (19228) 
Thread Start: Thread ID: 16400. Process bo.exe (19228) 
Thread Start: Thread ID: 19268. Process bo.exe (19228) 
Thread Start: Thread ID: 18640. Process bo.exe (19228) 
Thread Exit: Thread ID: 16400. Process bo.exe (19228) 
Thread Start: Thread ID: 6096. Process bo.exe (19228) 
Module Load: D3DCOMPILER_47.dll. No Debug Info. Base Address: $14510000. Process bo.exe (19228) 
Module Unload: D3DCOMPILER_47.dll. Process bo.exe (19228) 

最後兩行將重複無限次。

UPDATE#1(編輯):我沒有試圖調試D3DCompiler。我試圖找出經濟放緩的原因。

UPDATE#2:我關閉了模塊的調試器消息,這沒有幫助。在相同的近似點下,應用程序的速度急劇下降。這隻在調試時發生。

更新#3:如何重建:

  1. 開始一個新的多設備應用。
  2. 選擇空白應用程序。
  3. 放下定時器。
  4. 拖放TRectangle。
  5. 添加一個布爾公共變量「up」。
  6. 對於Timer1Timer添加以下代碼:

    procedure TForm1.Timer1Timer(Sender: TObject); begin if up then my := -1 else my := 1; if (Rectangle1.Position.Y + my < 10) or (Rectangle1.Position.Y + my > 470) then up := not up else Rectangle1.Position.Y := Rectangle1.Position.Y + my; end;

設置TTimer間隔的東西低。在我的機器上,我可以產生效果 ,間隔長達大約60分鐘。儘管仍然能夠實現上述調試器,但這個數字還是很小。

+0

這些消息都與Windows系統DLL相關。它們沒有隨其中的調試信息一起提供。你可以從MS獲得調試符號,但它們不會對你有所幫助。爲什麼你認爲你需要調試系統DLL?任何問題都將出現在你自己的代碼中。如何在消息窗口中輸出關於沒有調試信息的系統DLL使調試無效?再次,它是您應該調試的自己的代碼,而不是系統代碼。 –

+0

我希望編輯澄清。 – user3810626

+0

因此關閉你不想看到的消息。工具 - >選項 - >調試器選項 - >事件日誌。 –

回答

0

所以,Firemonkey大師禮,功在Embarcadero公司董事會,給了我這個問題的答案,這是我張貼在這裏爲今後的民俗:

FMX.Types.GlobalUseGPUCanvas := True; 

這麼簡單。

N.B.這有其他副作用:在我的情況下,我一直在使用默認尺寸規格的字體,當這是錯誤的時候縮放得很好,並且當這是真的時會得到超模糊的。 (我只是做了更大的字體,但我相信這不是設置它的唯一效果。)