![]() |
Delphi-Version: 10.4 Sydney
Programm bleibt sporadisch und undefineirt hängen
Anwendungsbeschreibung: 3 PC sind über OPC mit einer SPS verbunden (Anlagenvisualisierung). Wenn ein Produkt gefertigt bzw. behandelt wird, werden die Daten in eine Firebird-DB (4.04) geschrieben. Hier geht es nach dem Prinzip: Der schnellere siegt und macht die DB-Änderung, die anderen bekommen eine primary key violation oder auch einen Deadlock und machen dann ein Rollback. Dadurch erreiche ich eine gewisse Redundanz, wenn ein Rechner ausfällt oder hängt.
Nach einer gewissen Laufzeit, die durchaus Stunden dauern kann, aber auch mal nach 1/4 oder 1/2 Stunde, hängt die Anwendung, es gibt nur noch die Eieruhr und dann die Meldung App reagiert nicht mehr. Oftmals in Zusammenhang mit einer Bedieneraktion, aber auch ohne Interaktion. Memoryleaks habe ich untersucht und beseitigt, ebenfalls habe ich inzwischen noch den Speicherverbrauch bei laufender Applikation angeschaut, da tut sich ebenfalls nichts auffaelliges. Aktuell habe ich keine Idee, wo ich jetzt weiter ansetzen kann. |
AW: Programm bleibt sporadisch und undefineirt hängen
Debugger (RemoteDebugging)
ProcessExplorer Taskmanager->Snapshot und später mit'm WindowsDebugger ansehn ... Halt den Stack ansehn, und hoffen man erkennt, wo es hängt :zwinker: |
AW: Programm bleibt sporadisch und undefineirt hängen
Aus dem Bauch raus: Fehlende Freigabe der Datenbank nach erfolgreichem Schreiben, oder einer der 'ausgebremsten' PCs blockiert aus Trotz die Datenbank.
|
AW: Programm bleibt sporadisch und undefineirt hängen
OPC oder OPC UA? Grade bei letzterem könntest du dir doch eine simulierte Gegenseite bauen um zu prüfen, wie sich deine Anwendung verhält wenn die SPS z.B. nicht mehr antwortet, oder nur stark verzögert oder halt einen Fehlercode zurückgibt.
Ich finde meinen Quelltext leider nicht mehr, aber ich hatte auch einmal einen "Watchdog-Thread" welcher den MainThread alle 500ms mit einer Windows-Message angepingt hat, und wenn er nicht schnell genug eine Antwort bekam hat er den Stack des Hauptthreads ausgelesen und auf die Platte geloggt. Ich wüsste spontan nicht mehr, wie man auf den Stack eines anderen Threads herankommt, aber dann könntest du auch ohne Live-Debugging immerhin beim Kunden protokollieren, dass etwas hängt, und wo. |
AW: Programm bleibt sporadisch und undefineirt hängen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 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