habe folgendes Problem. Ein Korn Shell Skript hängt fest und ich wollte herausfinden an welcher Zeile er hängt, da in der dazugehörigen Logdatei kein Fehler aufgetaucht ist, lässt er sich auch nicht einkreisen.
Folgendes hab ich schon versucht.
- im gdb mittels »where« geschaut wo der Prozess hängt, er hängt bei einem waitpid() Aufruf
- ps liefert zum hängenden Prozess allerdings keinen zugehörigen Childprozess, was eventuell erklärt warum der Prozess nun endlos wartet
Wegen dem waitpid() denke ich, es müsste im Skript ein Aufruf von dieser Art sein
Code: Alles auswählen
rc=`foo bar`
Der Fehler ist in 2 Monaten nun genau 2x aufgetreten. Dazwischen ist das Skript (läuft als Daemon 24/7) fehlerfrei ausgeführt worden.
Leider besteht keine Möglichkeit (ist ein Zeit Problem) den Prozess auf gut Glück mit mehr Loginformationen nochmal zu starten und auf das nächste Festhängen zu warten.
Gibt es eine relativ einfache Möglichkeit mittels gdb das zuletzt ausgeführte Kommando im Korn Shell Skript zu ermitteln?
Hier noch ein paar zusätzliche Infos.
- Korn Shell ist die ksh93, ohne Debuginformationen kompiliert und gestrippt
Da dieses Shell Skript auch eher suboptimal geschrieben ist, werd ich wohl schon mal anfangen und den Code aufräumen.
Allerdings würde mich eine Lösung des Problems trotzdem interessieren. Ein core dump, für spätere Versuche, wurde schon erstellt.
SubOptimal