![]() |
Wo bleibt mein Programm hängen?
Moin,
ich habe das Problem, dass mein Programm manchmal an einer bestimmten Stelle einfriert. Leider kann ich das Problem nicht zuverlässig reproduzieren. Nun versuche ich raus zu bekommen, an welcher Stelle es hakt. Wenn das Programm einfriert, kann ich in der IDE auf den Pause-Button klicken. Die IDE springt dann in die CPU-Ansicht. Nun muss ich zugeben, dass mich mich damit so überhaupt nicht auskenne. Wie kann ich in solchen Situationen die Stelle einkreisen, an der mein Problem liegt? Danke! Jens |
AW: Wo bleibt mein Programm hängen?
Was sagt der Callstack?
|
AW: Wo bleibt mein Programm hängen?
Liste der Anhänge anzeigen (Anzahl: 1)
Leider überhaupt nichts...
|
AW: Wo bleibt mein Programm hängen?
Dumme Frage: Ist das auch wirklich der richtige Thread?
|
AW: Wo bleibt mein Programm hängen?
Das weiß ich ehrlich gesagt nicht. Es könnte durchaus sein, dass er an der Stelle in einem Thread hängen bleibt. Da gibt es durchaus mehrere Stellen, wo ich z.B. TMonitor.Enter verwende. Die Stellen hatte ich auch schon in Verdacht. Aber es ist halt nur ein Verdacht.
Ich hab gehofft, dass die IDE mir noch Werkzeuge an die Hand gibt, um die Stelle genauer einzukreisen. |
AW: Wo bleibt mein Programm hängen?
So viele Threads werden es doch nicht sein. Schau dir doch für jeden mal den Callstack an. Der erste ist doch bei einer VCL-Anwendung in der Regel der Hauptthread.
|
AW: Wo bleibt mein Programm hängen?
Zitat:
|
AW: Wo bleibt mein Programm hängen?
Ah, gefunden. Man geht auf Ansicht -> Debug-Fenster -> Threads.
Dann kann man die Threadliste durchklicken. Vielen Dank, dass Du mich in die richtige Richtung geschubst hast. :thumb: |
AW: Wo bleibt mein Programm hängen?
Eine Empfehlung noch.
Verwende statt TMonitor.Enter doch besser CriticalSections. Wenn mehrere Threads auf dieselben Daten zugreifen (schreibend), dann natürlich eine globale CriticalSection. CS sind weitaus performanter als TMonitor Siehe auch hier ![]() |
AW: Wo bleibt mein Programm hängen?
Ich hab mich aufgrund dieses Postings für den TMonitor entschieden:
![]() Die Performanceprobleme scheinen seit XE5 nicht mehr zu bestehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz