Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Wo bleibt mein Programm hängen? (https://www.delphipraxis.net/192969-wo-bleibt-mein-programm-haengen.html)

Nersgatt 7. Jun 2017 09:13

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

Bernhard Geyer 7. Jun 2017 09:13

AW: Wo bleibt mein Programm hängen?
 
Was sagt der Callstack?

Nersgatt 7. Jun 2017 09:15

AW: Wo bleibt mein Programm hängen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Leider überhaupt nichts...

Der schöne Günther 7. Jun 2017 09:38

AW: Wo bleibt mein Programm hängen?
 
Dumme Frage: Ist das auch wirklich der richtige Thread?

Nersgatt 7. Jun 2017 09:42

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.

Der schöne Günther 7. Jun 2017 09:45

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.

Nersgatt 7. Jun 2017 09:48

AW: Wo bleibt mein Programm hängen?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1373661)
Schau dir doch für jeden mal den Callstack an.

Vielleicht ist das eine doofe Frage, aber wie geht das? Kann ich den Moment die Ansicht des Callstacks auf einen anderen Thread umschalten?

Nersgatt 7. Jun 2017 10:22

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:

SneakyBagels 7. Jun 2017 10:31

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 TMonitor vs TRTLCriticalSection

Nersgatt 7. Jun 2017 10:34

AW: Wo bleibt mein Programm hängen?
 
Ich hab mich aufgrund dieses Postings für den TMonitor entschieden:
http://www.delphipraxis.net/1370333-post8.html

Die Performanceprobleme scheinen seit XE5 nicht mehr zu bestehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz