When debugging a Firemonkey app (a bouncing ball), a minute or so into the ball moving around, this message begins to pour out to the EventLog:
Module Load: D3DCOMPILER_47.dll. No Debug Info. Base Address: $14D50000. Process bo.exe (13824) Thread Start: Thread ID: 14268. Process bo.exe (13824)
It makes the debugging mode nigh useless. This is a Delphi Architect Trial version, blank form Firemonkey app. I thought maybe it is due to it being a trial version.
I do see about three threads starting before this happens. I'm not consciously starting any threads but I assume one is for the user interface and one is...for the debugger? I dunno. Here's a representative sample:
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)
And the last two lines will be repeated ad infinitum.
UPDATE #1 (edited): I'm not trying to debug D3DCompiler. I am trying to locate the cause of the slowdown.
UPDATE #2: I turned off the debugger messages for modules and this did not help. At the same approximate point, the speed of the app drops precipitously. This only happens while debugging.
UPDATE #3: How to recreate:
- Start a new Multi-Device Application.
- Select Blank Application.
- Drop a TTimer.
- Drop a TRectangle.
- Add a boolean public variable "up".
For Timer1Timer add the following code:
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;
Set the TTimer Interval to something low. On my machine I can produce the effect with an interval up to about 60. This is as small as I've been able to make it while still getting the aforementioned debugger grind-down.