Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#1

Ursache für dauerhafte CPU-Auslastung finden

  Alt 8. Feb 2021, 17:12
Ich habe hier ein relativ großes Delphi-Projekt vor mir, wo das Programm minimiert im Tray ohne jegliche Aufgabe eine dauerhafte CPU-Auslastung von 0,1% - 0,2% im Task-Manager anzeigt (andere im Hintergrund laufenden Anwendungen haben 0%). Das mag erstmal nicht schlimm erscheinen, aber normalerweise ist das ein Zeichen dafür, dass irgendetwas nicht passt und dann an anderer Stelle Probleme machen könnte.

Ich frage mich nun, wie ich die Ursache herausfinden kann.
  • Zunächst habe ich es mir mit dem Process Explorer angeschaut. Dort sehe ich mehrere Threads der Anwendung.
  • Der Thread mit der niedrigsten TID (Hauptthread?) schwankt durchgehend zwischen 0.10 und 0.22 herum.
  • In der "Start Address" Spalte steht Name.exe!TMethodImplementationIntercept+0x... Was ist das?
  • Der Stack für diesen Thread zeigt zwar eine Liste mit 27 Einträgen an, aber diese beziehen sich mit Ausnahme des genannten Eintrags auf Windowskomponenten, sodass ich dadurch auch nicht schlauer werde.
  • Im Debugger sehe ich im Threads-Tab alle Threads, die auch im Process Explorer angezeigt wurden, also auch den betroffenen Thread, aber scheinbar kann man dort nichts damit machen (State: Runnable; Status: [leer]).
Wie komme ich jetzt weiter? Kann ich in der IDE irgendwie einen besseren Stack Trace als per Process Explorer anzeigen lassen? Sowas wie madExcept nach einer Exception anzeigt, nur eben im laufenden Betrieb ohne Fehler?
Oder komme ich irgendwie anders weiter?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat