![]() |
VCL Blockade - Verursacher ermitteln
Hallo zusammen,
in einer sehr großen und umfangreichen Anwendung mit vielen Threads, kommt es zu gewissen Zeiten vor, dass die VCL für ein paar Sekunden hängt. Ich habe eine Vermutung voran das liegt, möchte aber weitere Analysen betreiben. Meine Synchronize Aufrufe aus des Threads werden alle protokolliert. In dem Protokoll sehe ich auch, die Blockaden für die Zeit x. Ich nutze viele Fremdkomponenten und zugekaufte Bibliotheken. Meine Frage ist, kann ich irgendwie herausbekommen, wer der Verursacher der Blockade ist? Meine Threads und deren ThreadID habe ich alle protokolliert, wie bekomme ich allerdings zum Zeitpunkt der Blockade heraus, wer gerade die VCL blockiert? Das meine eigenen Synchronize Aufrufe dann warten, sehe ich selber im Protokoll. Ich vermute hier Fremdkomponenten, möchte da aber sicher gehen bevor ich evtl etwas anpasse bzw an den Hersteller herantrete. Ich hoffe, ihr habt da eine Idee. Danke |
AW: VCL Blockade - Verursacher ermitteln
Sowohl MadExcept als auch Eurekalog können ein Hängen des Hauptthreads erkennen. Du musst lediglich den Timeout gering genug einstellen, damit diese bei der bekannten Blockadedauer anspringen. Das klappt natürlich nur, wenn es nicht nur um 3 Sekunden oder so geht.
Auf jeden Fall können beide Stracktraces aller laufenden Threads erzeugen, auch manuell. Du könntest also auch selbst einen Überwachungsthread bauen, der dann den Report manuell auslöst. |
AW: VCL Blockade - Verursacher ermitteln
Hi Sebastian, ich habe mit beiden Tools noch nie gearbeitet. Kenne diese nur vom Namen.
Diese werden in die laufende Anwendung mit rein compiliert und dann löst man das aus oder wie läuft das genau? Nein, es handelt sich nicht nur um 3s (eher Richtung 20s) aber meine Threads hängen dann eben teilweise im Synchronize Aufruf fest. Kannst du mir das mit den beiden Tools näher erklären oder gibt es irgendwo eine Anleitung dazu? |
AW: VCL Blockade - Verursacher ermitteln
Hi,
Ich kennen und nutze Eurekalog, das wird mit reinkompiliert und kann konfiguriert werden, u.a. kann man auch einen Timeout definieren, bei dessen auftreten ein Fehlerbericht erstellt wird. Das ganze lässt sich z.B. mit mantis koppeln, so dass die Berichte direkt dort ankommen. Tomy |
AW: VCL Blockade - Verursacher ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
Ein Bild dazu
|
AW: VCL Blockade - Verursacher ermitteln
Die grundsätzliche Funktionalität sieht bei beiden Tools genauso aus. Hier bei madExcept (check for frozen main thread):
![]() Bei Eurekalog hast du noch mehr Einstellungen, welche Threads dich interessieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 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-2025 by Thomas Breitkreuz