[發明專利]故障診斷方法、裝置及電子設備有效
| 申請號: | 201810407295.2 | 申請日: | 2018-04-28 |
| 公開(公告)號: | CN108628744B | 公開(公告)日: | 2022-03-15 |
| 發明(設計)人: | 林漢忠 | 申請(專利權)人: | 深圳市風云實業有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京超凡志成知識產權代理事務所(普通合伙) 11371 | 代理人: | 郭新娟 |
| 地址: | 518000 廣東省深圳市車公*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 故障診斷 方法 裝置 電子設備 | ||
本發明實施例涉及C語言編程技術領域,具體而言,涉及一種故障診斷方法、裝置及電子設備。該故障診斷方法包括:若銷毀使用對象且獲得使用對象的引用計數不為零的信息時,將使用對象的其中一個調用點作為待診斷調用點,獲得對應的使用者地址,根據使用者地址遍歷預設的使用者配對表和使用對象調用點列表,獲得待診斷調用點列表,統計待診斷調用點列表中包含的引用計數加一的使用次數總和以及引用計數減一的使用次數總和,判斷引用計數加一的使用次數總和與引用計數減一的使用次數總和是否相同,若不相同,將待診斷調用點判定為故障調用點,將待診斷調用點列表和使用者配對表的信息進行存儲。該方法能對出現引用計數故障的調用點進行準確定位。
技術領域
本發明實施例涉及C語言編程技術領域,具體而言,涉及一種故障診斷方法、裝置及電子設備。
背景技術
在C語言代碼編程實現中,一個使用者想要使用對象,如引用對象,首先需要持有該對象,操作對象的引用計數加1,表示使用者正在使用該對象,一直到使用者不再需要持有該對象時,會解除引用,操作對象的引用計數減1。在較多場景中,需要釋放使用對象所占資源,而在進行資源釋放之前,確定使用對象的引用計數故障信息十分重要。
發明內容
有鑒于此,本發明提供了一種故障診斷方法、裝置及電子設備,以實現對出現引用計數故障的調用點進行準確定位。
為實現上述目的,本發明實施例提供了一種故障診斷方法,用于診斷C語言代碼編程環境中,使用對象對應的各調用點故障與否,其中,使用者可以對使用對象進行持有或者釋放,當所述使用者持有該使用對象時,該使用對象的引用計數加一,當所述使用者釋放該使用對象時,該使用對象的引用計數減一,所述方法包括:
若銷毀所述使用對象且獲得所述使用對象的引用計數不為零的信息時,將所述使用對象的其中一個調用點作為待診斷調用點,獲得所述待診斷調用點對應的使用者地址;
根據所述使用者地址遍歷預設的使用者配對表和使用對象調用點列表,獲得待診斷調用點列表;
統計所述待診斷調用點列表中包含的引用計數加一的使用次數總和以及引用計數減一的使用次數總和;
判斷所述引用計數加一的使用次數總和與所述引用計數減一的使用次數總和是否相同,若不相同,將所述待診斷調用點判定為故障調用點,將所述待診斷調用點列表中的信息和所述遍歷的使用者配對表中的信息進行存儲。
可選地,所述方法還包括:
根據所存儲的待診斷調用點列表中的信息和所述遍歷的使用者配對表中的信息,采用預設的地址和符號映射表查找出對應的函數名或代碼位置信息,將所述函數名或所述代碼位置信息進行存儲。
可選地,將所述待診斷調用點列表中的信息和遍歷的使用者配對表中的信息進行存儲的步驟,包括:
將所述待診斷調用點列表中包含的引用計數加一的調用點地址、引用計數加一的使用次數總和、引用計數減一的調用點地址和引用計數減一的使用次數總和進行存儲;
將所述遍歷的使用者配對表中的使用者地址進行存儲。
可選地,所述引用計數加一的調用點地址、所述引用計數加一的使用次數總和、所述引用計數減一的調用點地址和所述引用計數減一的使用次數總和通過以下步驟獲得:
獲得被調用的引用計數加一的操作代碼在指令級別中的內存地址,將該內存地址作為引用計數加一的調用點地址;
獲得引用計數加一操作代碼被運行的總次數,將該總次數作為引用計數加一的使用次數總和;
獲得被調用的引用計數減一的操作代碼在指令級別中的內存地址,將該內存地址作為引用計數減一的調用點地址;
獲得引用計數減一操作代碼被運行的總次數,將該總次數作為引用計數減一的使用次數總和。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市風云實業有限公司,未經深圳市風云實業有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810407295.2/2.html,轉載請聲明來源鉆瓜專利網。





