In C unter Solaris 10 möchte ich den Aufrufstapel von einem beliebigen Thread innerhalb eines Prozesses abrufen.Rufen Sie Aufrufstapel von beliebigem Thread innerhalb C
Ich habe viele Worker-Threads und einen Thread, der sie alle überwacht, um enge Schleifen und Deadlocks zu erkennen. Die Funktion, die ich implementieren möchte, besteht darin, dass der Überwachungs-Thread den Aufruf-Stack mehrere Male aus dem "aufgehängten" Thread druckt, bevor er ihn tötet.
Ich weiß, wie dies implementiert werden, indem der Überwachungsthread pstack ausführen (mit System() oder durch Gabelung). Aber ich würde gerne in der Lage sein, diese Funktion in C zu implementieren. Gibt es eine Möglichkeit, dies zu tun?
Ich weiß, wie man einen Thread seinen OWN Call Stack drucken lässt, indem er den Stack durchläuft, was nützlich ist, wenn er eine Assert trifft, aber nicht wie man dies für einen anderen Thread innerhalb desselben Prozesses tut.
Danke für jede Hilfe. NickB
Aber wie ermöglicht das einem Thread, den Aufrufstapel von einem anderen Thread zu erhalten? – NickB