2009-06-25 63 views

回答

2

在某些平臺上,死鎖檢測工具可能會幫助您發現已經觀察到的並且尚未觀察到的死鎖以及其他錯誤。

在Solaris上,請嘗試LockLint
在Linux上,嘗試使用HelgrindDRD

+0

與所有的Valgrind工具一樣,Helgrind可以是一個非常有用的工具。 – 2009-07-07 22:55:36

0

如果您使用的是POSIX,請嘗試調查PTHREAD_MUTEX_ERRORCHECK。

0

我一直投入了一些時間寫下來或嫁接在一個靈活的日誌記錄功能爲我工作的項目,它總是在轉彎困難的bug成難辦回報豐厚。至少,在函數或方法中記錄日誌之前和之後的鎖定原語,並顯示被鎖定的對象和正在執行鎖定的線程,這總能幫助我在幾分鐘內完成對攻擊線程的調整 - 假設當然,這個問題可以被複制。

在調試器下載入程序實際上是確定進程死鎖後發生的事情的一種相當有限的方法,因爲它可以給你的是一個你是多麼糟糕的快照,而不是一步一步解釋如何你搞砸了,我發現更有幫助。

0

或者獲得英特爾線程檢查器。精細的工作。