GDB 檢視死鎖

2021-06-25 18:04:09 字數 544 閱讀 4539

死鎖:一種情形,此時執行程式中兩個或多個執行緒發生永久堵塞(等待),每個執行緒都在等待被  

其他執行緒占用並堵塞了的資源。例如,如果執行緒a鎖住了記錄1並等待記錄2,而執行緒b鎖住了記錄2並等待記錄1,這樣兩個執行緒就發生了死鎖現象。

gdb除錯死鎖的方法:

gdb 

attach pid

找到_lll_lock_wait 鎖等待的地方。

然後查詢該鎖被哪個執行緒鎖住了。

例如:檢視哪個執行緒擁有互斥體

(gdb) print accounta_mutex

$1 = }

(gdb) print 0x2527

$2 = 9511

(gdb) print accountb_mutex

$3 = }

(gdb) print 0x2529

$4 = 9513

(gdb)

從上面的命令中,我們可以看出acconta_mutex是被執行緒 5(lwp 9511)加鎖(擁有)的,而accontb_mutex是被執行緒 3(lwp 9513)加鎖(擁有)的。

Oracle檢視死鎖

檢視有哪些表被鎖住 select b.owner,b.object name,a.session id,a.locked mode from v locked object a,dba objects b where b.object id a.object id select b.username...

檢視死鎖p lockinfo

set quoted identifier on go set ansi nulls on go exec proc p lockinfo 0,0 alter proc p lockinfo kill lock spid bit 1,是否殺掉死鎖的程序,1 殺掉,0 僅顯示 show spid if...

SQL Server 檢視死鎖

use master goselect top 100 session id request id start time as 開始時間 status as 狀態 command as 命令 dest.text as sql語句 db name database id as 資料庫名 blockin...