2

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

4

4 回答 4

2

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

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

于 2009-07-05T16:43:01.427 回答
0

如果您使用的是 POSIX,请尝试调查 PTHREAD_MUTEX_ERRORCHECK。

于 2009-06-25T13:12:58.103 回答
0

我总是投入一些时间来编写或将灵活的日志工具移植到我从事的项目中,并且在将困难的错误变成简单的错误方面总是获得丰厚的回报。至少,将锁定原语包装在记录之前和之后记录的函数或方法中,并显示被锁定的对象和执行锁定的线程总是帮助我在几分钟内将有问题的线程归零——假设当然,这个问题完全可以重现。

在调试器下加载程序实际上是一种非常有限的方法来确定一旦进程死锁会发生什么,因为它所能给你的只是你搞砸的严重程度的快照,而不是一步一步地解释你是如何搞砸的,我发现这更有帮助。

于 2009-06-25T13:18:24.630 回答
0

或者获取英特尔线程检查器。好作品。

于 2009-07-05T17:34:04.783 回答