[發明專利]一種基于LINUX的多線程死鎖問題定位方法及系統在審
| 申請號: | 202010325506.5 | 申請日: | 2020-04-23 |
| 公開(公告)號: | CN111538599A | 公開(公告)日: | 2020-08-14 |
| 發明(設計)人: | 熊兵 | 申請(專利權)人: | 杭州涂鴉信息技術有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52 |
| 代理公司: | 北京崇智專利代理事務所(普通合伙) 11605 | 代理人: | 何海英 |
| 地址: | 310013 浙江省杭*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 linux 多線程 死鎖 問題 定位 方法 系統 | ||
本申請公開了一種基于LINUX的多線程死鎖問題定位方法,包括:臨界區代碼進入鎖保護的臨界區之前開啟定時器;在所述定時器的到期處理函數中,保存死鎖的現場,加入調試信息;復現死鎖的現象;分析所述到期函數的輸出信息;并獲得分析結果;根據所述分析結果定位死鎖的位置和原因。與現有技術相比,本申請具有如下有益效果:本發明通過linux定時器和定時器的到期處理函數,來定位多線程死鎖。大大減少一些無用的打印信息,方便定位問題。
技術領域
本申請涉及嵌入式領域,具體而言,涉及一種基于LINUX的多線程死鎖問題定位方法。
背景技術
多個任務在沒有互相同步的情況下,同時訪問linux中的一些共享資源(全局變量,鏈表等),會導致linux進入不穩定的競爭狀態;linux中鎖的使用,就是為了保護這些共享資源,同步多任務對共享資源的訪問。
對鎖的不恰當使用,有可能會導致死鎖(鎖不釋放導致其他任務無法獲取鎖而無法運行)的問題。比如鎖的遞歸使用(在已經獲得鎖的情況下,再去申請對該鎖的使用);在擁有鎖的代碼中休眠(在獲得鎖的情況下,調用了會導致任務休眠的函數);在鎖保護的臨界區代碼執行時,任務被搶占。對這些死鎖問題的定位需要運用一些調試手段。
比較常用的調試方法是加入打印日志信息,在進入臨界區之前和出臨界區之后,分別加上不同的調試信息,用日志文件來保存這些調試信息,之后再分析日志文件來定位死鎖問題。
有些鎖,獲取和釋放都很頻繁,如果使用加入打印日志信息的方法,會導致日志信息過多,造成日志缺失。過多的打印日志信息,也會難以分析和定義問題。
發明內容
本申請的主要目的在于提供一種基于LINUX的多線程死鎖問題定位方法,包括:
臨界區代碼進入鎖保護的臨界區之前開啟定時器;
在所述定時器的到期處理函數中,保存死鎖的現場,加入調試信息;
復現死鎖的現象;
分析所述到期函數的輸出信息;并獲得分析結果;
根據所述分析結果定位死鎖的位置和原因。
可選地,基于LINUX的多線程死鎖問題定位方法還包括:
找到對應的所述臨界區代碼。
可選地,基于LINUX的多線程死鎖問題定位方法中,所述定時器的定時時間大于所述臨界區代碼的運行時間。
可選地,基于LINUX的多線程死鎖問題定位方法中,所述調試信息包括:獲取鎖的任務名,獲取鎖的代碼地址。
可選地,基于LINUX的多線程死鎖問題定位方法還包括:
所述臨界區代碼出臨界區后,刪除所述定時器。
可選地,基于LINUX的多線程死鎖問題定位方法中,所述輸出信息為打印信息。
根據本申請的另一個方面,還提供了一種基于LINUX的多線程死鎖問題定位方法,包括:
尋找模塊,用于找到對應的所述臨界區代碼;
定時器開啟模塊,用于臨界區代碼進入鎖保護的臨界區之前開啟定時器;
保存模塊,用于在所述定時器的到期處理函數中,保存死鎖的現場,加入調試信息;
刪除模塊,用于所述臨界區代碼出臨界區后,刪除所述定時器;
復現模塊,用于復現死鎖的現象;
分析模塊,用于分析所述到期函數的輸出信息;并獲得分析結果;
定位模塊,用于根據所述分析結果定位死鎖的位置和原因。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于杭州涂鴉信息技術有限公司,未經杭州涂鴉信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010325506.5/2.html,轉載請聲明來源鉆瓜專利網。





