调试MT程序中的死锁线程?

时间:2009-06-25 13:07:33

标签: multithreading debugging deadlock

除了gdb之外,在MT程序中调试死锁线程有哪些可能的方法?

4 个答案:

答案 0 :(得分:2)

在某些平台上,死锁检测工具可以帮助您找到已观察到的尚未观察到的死锁以及其他错误。

在Solaris上,尝试LockLint 在Linux上,尝试HelgrindDRD

答案 1 :(得分:0)

如果您正在使用POSIX,请尝试调查PTHREAD_MUTEX_ERRORCHECK。

答案 2 :(得分:0)

我总是花一些时间在灵活的日志设施上编写或嫁接到我所参与的项目中,并且总是在将困难的错误变成简单的错误方面获得丰厚回报。至少,在记录之前和之后记录的函数或方法中包装锁定原语,并显示被锁定的对象以及正在执行锁定的线程总是帮助我在几分钟内对违规线程进行归零 - 假设当然,这个问题可以重现。

在一个调试器下加载程序实际上是一个非常有限的方法来确定一旦进程死锁后发生了什么,因为它可以给你的快照是你搞砸了多少,而不是一步一步解释你如何搞砸了,我觉得更有帮助。

答案 3 :(得分:0)

或者获取英特尔®主题检查程序。干得好。