[發(fā)明專利]程序死鎖的測試方法、裝置和設(shè)備有效
| 申請?zhí)枺?/td> | 201811402704.6 | 申請日: | 2018-11-22 |
| 公開(公告)號: | CN109669858B | 公開(公告)日: | 2022-04-12 |
| 發(fā)明(設(shè)計(jì))人: | 郭祥斌 | 申請(專利權(quán))人: | 新華三技術(shù)有限公司合肥分公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F9/52 |
| 代理公司: | 北京超凡志成知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 11371 | 代理人: | 王艷芬 |
| 地址: | 230000 安徽省合肥市高新區(qū)創(chuàng)*** | 國省代碼: | 安徽;34 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 程序 死鎖 測試 方法 裝置 設(shè)備 | ||
1.一種程序死鎖的測試方法,其特征在于,包括:
在被測試程序啟動后,偵聽所述被測試程序中的線程的處理指令;
如果偵聽到所述線程的鎖指令,記錄所述線程的鎖對象信息序列;其中,所述鎖指令包括加鎖指令和解鎖指令;所述鎖對象信息序列包括:所述加鎖指令對應(yīng)的加鎖對象信息和所述解鎖指令對應(yīng)的解鎖對象信息;所述鎖對象信息序列的記錄方式為在映射表中以鏈表形式記錄;
當(dāng)所述被測試程序停止運(yùn)行時,獲取各個線程的鎖對象信息序列中的最簡加鎖序列;其中,所述最簡加鎖序列為帶有嵌套關(guān)系的加鎖對象序列;所述帶有嵌套關(guān)系的加鎖對象序列中的嵌套關(guān)系為同一個加鎖對象序列中,存在一個加鎖對象的基礎(chǔ)上,又出現(xiàn)另一個加鎖對象;
將各個所述線程的最簡加鎖序列中相同的最簡加鎖序列合并;
繪制合并后的所述最簡加鎖序列的有向圖;
基于繪制出的所述有向圖確定所述被測試程序的死鎖信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
如果被測試程序啟動,啟動第一定時器;
如果所述第一定時器計(jì)時停止,查找已結(jié)束的線程;
從查找到的所述已結(jié)束的線程的各個鎖對象信息序列中,分別提取出具有嵌套關(guān)系的加鎖對象序列,得到所述已結(jié)束的線程的最簡加鎖序列;
清空所述已結(jié)束的線程的鎖對象信息序列,并啟動所述第一定時器重新計(jì)時。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,從查找到的所述已結(jié)束的線程的各個鎖對象信息序列中,分別提取出具有嵌套關(guān)系的加鎖對象序列,得到所述已結(jié)束的線程的最簡加鎖序列的步驟,包括:
對查找到的所述已結(jié)束的線程的每個鎖對象信息序列,均按照元素先后順序讀取當(dāng)前線程的鎖對象信息序列中的元素,對于每個讀取到的元素均執(zhí)行如下步驟:
檢查所述元素是否為加鎖對象信息;
如果所述元素為加鎖對象信息,將所述加鎖對象信息添加至所述鎖對象信息序列的當(dāng)前最簡序列;
如果所述元素為解鎖對象信息,復(fù)制所述當(dāng)前最簡序列,將復(fù)制的所述當(dāng)前最簡序列作為下一個最簡序列,從所述下一個最簡序列中刪除所述解鎖對象信息對應(yīng)的加鎖對象信息;
對所述當(dāng)前最簡序列中的重復(fù)元素進(jìn)行去重處理,檢查所述當(dāng)前線程的最簡序列集合中是否存在與去重后的當(dāng)前最簡序列相互包含的最簡序列;如果存在,則在所述最簡序列集合中保留相互包含的最簡序列中較長的序列;如果不存在,將去重后的當(dāng)前最簡序列加入至所述最簡序列集合中;
將刪除所述鎖對象信息后的下一個最簡序列作為當(dāng)前最簡序列,繼續(xù)讀取所述鎖對象信息序列中的下一個元素;
當(dāng)所述鎖對象信息序列中的元素均遍歷完,讀取所述當(dāng)前線程的下一個鎖對象信息序列中的元素,繼續(xù)返回所述檢查所述元素是否為加鎖對象信息的步驟;
如果所述當(dāng)前線程的所有鎖對象信息序列均遍歷完,將下一個所述已結(jié)束的線程作為新的當(dāng)前線程,讀取新的所述當(dāng)前線程的鎖對象信息序列中的元素,繼續(xù)返回所述檢查所述元素是否為加鎖對象信息的步驟;
如果查找到的所述已結(jié)束的線程的每個鎖對象信息序列均遍歷完,將每個所述已結(jié)束的線程的最簡序列集合作為所述已結(jié)束的線程的最簡加鎖序列。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:
如果被測試程序啟動,啟動第二定時器;
如果所述第二定時器計(jì)時停止,停止所述被測試程序的運(yùn)行,停止所述第一定時器的計(jì)時,將未結(jié)束的線程設(shè)置為結(jié)束。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,將各個所述線程的最簡加鎖序列中相同的最簡加鎖序列合并的步驟,包括:
檢查各個所述線程的最簡加鎖序列中是否存在相同的最簡加鎖序列;
如果存在相同的最簡加鎖序列,保留相同的最簡加鎖序列中的一個,為保留的所述最簡加鎖序列設(shè)置重復(fù)標(biāo)識。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于新華三技術(shù)有限公司合肥分公司,未經(jīng)新華三技術(shù)有限公司合肥分公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811402704.6/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類





