Warm tip: This article is reproduced from serverfault.com, please click

c-如何重播多线程应用程序?

(c - How can I replay a multithreaded application?)

发布于 2012-05-01 20:42:03

我想记录同步操作,例如多线程应用程序的锁,sempahore,障碍,以便以后可以出于调试目的重播记录的应用程序。

途中将提供你自己的锁,sempaphore,条件变量等。这些函数也可以进行日志记录,但是我认为这是一个过大的选择,因为在它们之下必须使用一些常见的同步操作。

所以我的问题是我应该记录哪些同步操作,以便我需要对程序进行最少的修改。换句话说,构建所有这些同步操作的glibc和系统调用中的函数或宏是什么?因此,我只修改那些用于记录和重播的内容。

Questioner
pythonic
Viewed
0
2017-05-23 19:55:16

我能想到的最好的方法是在“记录”模式下使用gdb进行调试:

根据此页面:GDB Process Record线程支持正在进行中,但可能尚未完成。


我可以建议不太严格地回答你的问题

在其他平台上,还存在其他几个线程检查器,但是我对它们没有太多的经验。