Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kann man TThreads debuggen? (FKBassPlayer von dizzy Probl.) (https://www.delphipraxis.net/68114-kann-man-tthreads-debuggen-fkbassplayer-von-dizzy-probl.html)

Der_Ventilator 24. Apr 2006 20:50


Kann man TThreads debuggen? (FKBassPlayer von dizzy Probl.)
 
Hi, ich habe mit den FKBassPlayer von dizzy und seiner Visualisierung einen Mp3 Player gebaut.
Dabei wird ein 2. Thread erzeugt, der die Visualisierung ausgibt.


Nun erzeugt das Programm manchmal die Meldung

---------------------------
Thread-Fehler: Zugriff verweigert (5)
---------------------------
OK
---------------------------

Anscheinend tritt im Thread ein Fehler auf, sodass dieser abstürzt und ich ihn nicht mehr schlafen legen kann.

Auch wenn es innerhalb von Delphi ausgeführt wird, zeigt mir Dehiphi nicht wie sonst bei Fehlern die Stelle im Quelltext an, an der der Fehler aufgetreten ist. Sondern es macht einfach nichts.
Liegt es daran, dass der Fehler in einem Thread sein könnte und da Delphi nicht hineinschauen kann?

Wie kann ich diese auch für Delphi zugänglich machen?

Die Execute Prozedur ist riesig und ich weis nicht wie ich den Fehler finden kann ohne dass mir Delphi dabei hilft.

Oder kann man irgendwie rausfinden ob ein Thread hängt und ihn dann irgendwie beenden? (Auch wenn das den Fehler nicht beheben würde)

Der_Unwissende 25. Apr 2006 09:16

Re: Kann man TThreads debuggen? (FKBassPlayer von dizzy Prob
 
Hi,
Nicht sequentielles Programme zu debuggen ist nicht trivial. Dein Hauptproblem ist immer (wie sollte es anders sein), dass du nebenläufige Prozesse hast. Es gibt dabei sehr viele Möglichkeiten, was wann wie passieren kann. Da es aber nur Möglichkeiten sind, hast du dann ganz schnell das Problem, dass du nicht reproduzieren kannst, was gerade zu deinem Problem geführt hat (10.000 gute Läufe und ein Absturz währen nicht unrealistisch).

Am Besten ist (so dumm es klingt) einfach sauberen Code zu produzieren. Ich weiß, dass ist so ein toller Tipp, ich sollte ein Buch schreiben. Aber es ist dass A und O der Nebenläufigkeit. Je mehr du dir wirklich überlegst, zu was es alles nicht kommen kann, desto besser. Denn schon der Wechsel auf einen anderen Rechner kann bei nicht sequentiellen Programmen interessante Effekte haben.

Was das Debuggen angeht, so ist ein erst (sehr einfacher Weg), es mit einem Logger zu versuchen. Hierbei loggst du wirklich immer nur die stelle, an der sich dein Thread gerade befindet (also dort wo es sinnvoll ist), damit kannst du häufig schon die Region einschränken und eventuell den Fehler schon finden.
Es gibt auf jedenfall auch den Thread-View von Delphi, in dem du auch
Seit Delphi 7 kannst du zudem auch Threads einen Namen zuweisen. Damit lässt sich auch ein bestimmter Thread gezielter untersuchen. Aber wie gesagt, richtiges Debuggen von einem Thread ist schon etwas aufwändiger!

Gruß Der Unwissende

Luckie 25. Apr 2006 10:21

Re: Kann man TThreads debuggen? (FKBassPlayer von dizzy Prob
 
Zitat:

Zitat von Der_Ventilator
Zitat:

---------------------------
Thread-Fehler: Zugriff verweigert (5)
---------------------------
OK
---------------------------
Anscheinend tritt im Thread ein Fehler auf, sodass dieser abstürzt und ich ihn nicht mehr schlafen legen kann.

Ja, aber es ist kein Fehler im Code. Der Fehler deutet daraufhin, dass du auf eine Datei zugreifst, für die du keine Zugriffsrechte hast. Eventuell wird der Fehler auch ausgelöst, wenn eine Datei exklusiv geöffnet ist, da bin ich mir aber nicht so sicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.

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