Ich möchte Synchronisierungsoperationen wie Sperren, Sempahores, Barrieren einer Multithread-Anwendung aufzeichnen, so dass ich die aufgezeichnete Anwendung später zum Debuggen wiedergeben kann.Wie kann ich eine Multithread-Anwendung wiedergeben?
Auf dem Weg ist es, Ihre eigene Sperre, Sempaphore, Zustandsvariablen etc .. Funktionen, die auch Protokollierung, aber ich denke, das ist ein Overkill, da unten unter sie müssen einige gemeinsame Synchronisationsoperationen verwenden.
Also meine Frage ist, welche Synchronisationsoperationen ich protokollieren sollte, so dass ich minimale Änderungen an meinem Programm benötige. Mit anderen Worten: Welches sind die Funktionen oder Makros in glibc- und Systemaufrufen, über die alle diese Synchronisationsoperationen erstellt werden? Damit ändere ich nur diese zum Loggen und Abspielen.
Wie können alle Synchronisierungsvorgänge aufgezeichnet werden, um die aufgezeichnete Anwendung wiederzugeben? Es gibt viel mehr für ein Programm als die Reihenfolge der Synchronisationsoperationen, besonders wenn es aufgrund fehlender Synchronisation Race-Bedingungen gibt (was auch die Art von Problem ist, für die ich mir vorstellen kann, dass Sie Debugging-Hilfe haben möchten). –
Für den Moment vergessen Sie die Rennbedingungen. Ich weiß, dass sie auch wichtig sind. – pythonic
['strace (1)'] (http://linux.die.net/man/1/strace) kann hilfreich sein, aber es fängt keine Synchronisationsoperationen auf, die vollständig im Benutzerbereich stattfinden, ohne zum Kernel überzugehen, wie z als unbestätigte Mutex-Sperren. –