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

pyt*_*nic 7 c linux gcc glibc x86-64

我想记录同步操作,例如锁,sempahores,多线程应用程序的障碍,以便我可以稍后重放录制的应用程序,以便进行调试.

在途中是提供你自己的锁,sempaphore,条件变量等..也做日志记录的功能,但我认为这是一个矫枉过正,因为他们必须使用一些常见的同步操作.

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

seh*_*ehe 1

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

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


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

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