我試圖調試一個非常罕見的死鎖,並將其縮小爲pthread_mutex,它是類型1(遞歸)的問題。我想跟蹤這個互斥體來自哪裏,因爲我們所有的代碼都使用普通的互斥體,所以我認爲檢測互斥體類型==遞歸來追蹤它是有意義的。使用gdb調試pthreads
我試過在pthread_mutex_lock中設置一個手動斷點,通過堆棧指針等取消引用pthread_mutex_t來檢查它的類型,但是這被稱爲數百萬次,並且它會花費永遠的時間來捕捉互斥類型==遞歸的情況。
我也試着插入一個圖書館和的pthread_mutex_lock更換,使互斥型可以設置斷點,但沒有得到任何安打(不相信這是捕獲所有的來電對pthread_mutex_lock)
我得到在每次使用類型爲遞歸的互斥體調用pthread_mutex_lock時,都必須有一種設置觀察點/條件斷點的gdb方法?
以上任何幫助將不勝感激。提前致謝。
謝謝。是的,觀察點可以工作,但是我不確定的一點是如何計算要監視的內存地址,以便通過類型遞歸來監視對pthread_mutex_lock的所有調用。 – user1621986