[發(fā)明專利]內(nèi)存泄漏調(diào)試方法及裝置有效
| 申請?zhí)枺?/td> | 201610997589.6 | 申請日: | 2016-11-11 |
| 公開(公告)號: | CN108073461B | 公開(公告)日: | 2021-01-19 |
| 發(fā)明(設(shè)計)人: | 劉海鵬 | 申請(專利權(quán))人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07 |
| 代理公司: | 廣州三環(huán)專利商標代理有限公司 44202 | 代理人: | 郝傳鑫;賈允 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 內(nèi)存 泄漏 調(diào)試 方法 裝置 | ||
本發(fā)明公開了一種內(nèi)存泄漏調(diào)試方法及裝置,屬于系統(tǒng)內(nèi)存管理領(lǐng)域。所述內(nèi)存泄漏調(diào)試方法包括:掃描每個內(nèi)存對象,獲取每個內(nèi)存對象引用的其他內(nèi)存對象的地址列表;獲取目標對象集合,所述目標對象集合包括待調(diào)試的目標內(nèi)存對象;遍歷所述目標對象集合,根據(jù)所述地址列表,構(gòu)造所述目標內(nèi)存對象的引用關(guān)系鏈;根據(jù)所述目標內(nèi)存對象的引用關(guān)系鏈和調(diào)用棧信息,對邏輯泄漏和/或物理泄漏的泄漏點進行分析調(diào)試。本發(fā)明通過構(gòu)造目標內(nèi)存對象的引用關(guān)系鏈,并推測引用關(guān)系鏈上各內(nèi)存地址對象的數(shù)據(jù)類型,有效追溯泄漏對象的引用類別和來源,為泄漏點的分析調(diào)試工作提供了可靠的參考信息。
技術(shù)領(lǐng)域
本發(fā)明涉及系統(tǒng)內(nèi)存管理領(lǐng)域,特別涉及一種內(nèi)存泄漏調(diào)試方法及裝置。
背景技術(shù)
內(nèi)存是軟件運行的必需資源,在軟件長時間運行的過程中,可能由于各種原因?qū)е路峙涞膬?nèi)存沒有釋放掉,從而產(chǎn)生內(nèi)存泄漏,累積效應(yīng)可能導(dǎo)致系統(tǒng)內(nèi)存總量減少以至耗盡的現(xiàn)象。內(nèi)存泄漏包含物理性內(nèi)存泄漏和邏輯性內(nèi)存泄漏,泄漏點可能不是對泄漏對象本身的引用,而是深藏在對泄漏對象的引用關(guān)系鏈中,但是c/c++等底層高級語言產(chǎn)生的二進制可執(zhí)行文件并沒有包含數(shù)據(jù)類型信息,使得獲取對象間的引用關(guān)系變得困難。
現(xiàn)有技術(shù)中,內(nèi)存內(nèi)容是否為指向一個內(nèi)存對象的指針,可以通過內(nèi)存分配器記賬信息近似推斷出,基于這個特征,現(xiàn)有的一些c/c++內(nèi)存調(diào)試工具支持物理泄漏對象的自動探測,但是仍無法對內(nèi)存泄漏進行泄漏點精確定位。
現(xiàn)有技術(shù)至少具有如下缺點:
1、內(nèi)存泄漏信息只給出了泄漏對象的分配棧信息,沒有任何有關(guān)于具體泄漏點的輔助信息,用戶只能夠結(jié)合對于代碼的深刻理解才能推斷出具體泄漏點,有時甚至難以推斷出具體泄漏點;
2、只能給出物理內(nèi)存泄漏信息,無法給出邏輯內(nèi)存泄漏信息。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種內(nèi)存泄漏調(diào)試方法及裝置,可以有效追溯泄漏對象的引用類別和引用源,為泄漏點的分析調(diào)試工作提供了可靠的參考信息。所述技術(shù)方案如下:
一方面,本發(fā)明提供了一種內(nèi)存泄漏調(diào)試方法,所述方法包括:
掃描每個內(nèi)存對象,獲取每個內(nèi)存對象引用的其他內(nèi)存對象的地址列表;
獲取目標對象集合,所述目標對象集合包括待調(diào)試的目標內(nèi)存對象;
遍歷所述目標對象集合,根據(jù)所述地址列表,構(gòu)造所述目標內(nèi)存對象的引用關(guān)系鏈;
根據(jù)所述目標內(nèi)存對象的引用關(guān)系鏈和調(diào)用棧信息,對邏輯泄漏和/或物理泄漏的泄漏點進行分析調(diào)試。
另一方面,本發(fā)明提供了一種內(nèi)存泄漏調(diào)試裝置,所述裝置包括:
掃描模塊,用于掃描每個內(nèi)存對象,獲取每個內(nèi)存對象引用的其他內(nèi)存對象的地址列表;
獲取模塊,用于獲取目標對象集合,所述目標對象集合包括待調(diào)試的目標內(nèi)存對象;
構(gòu)造模塊,用于遍歷所述目標對象集合,根據(jù)所述地址列表,構(gòu)造所述目標內(nèi)存對象的引用關(guān)系鏈;
存儲模塊,用于存儲內(nèi)存對象的調(diào)用棧信息。
本發(fā)明提供的技術(shù)方案帶來的有益效果如下:
1)通過內(nèi)存掃描,獲取內(nèi)存間的引用關(guān)系,為邏輯泄漏對象和物理泄漏對象提供分析依據(jù);
2)將內(nèi)存間的引用關(guān)系轉(zhuǎn)化為目標對象集合的引用對象地址列表集合,構(gòu)造目標內(nèi)存對象的引用關(guān)系鏈,輔助邏輯泄漏和/或物理泄漏的泄漏點分析;
3)在引用關(guān)系鏈的基礎(chǔ)上,結(jié)合目標內(nèi)存對象的調(diào)用棧信息,為泄漏點分析提供更加詳細的信息。
附圖說明
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于騰訊科技(深圳)有限公司,未經(jīng)騰訊科技(深圳)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610997589.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 調(diào)試系統(tǒng)、調(diào)試方法和調(diào)試控制方法
- 一種終端調(diào)試方法和裝置
- 設(shè)備自動工程調(diào)試方法、裝置、系統(tǒng)和計算機設(shè)備
- 基于串口的遠程設(shè)備調(diào)試系統(tǒng)及方法
- 一種安卓系統(tǒng)動態(tài)調(diào)試的方法及系統(tǒng)
- 調(diào)試裝置和遠程調(diào)試系統(tǒng)
- 一種調(diào)試方法、裝置及系統(tǒng)
- 一種應(yīng)用程序開發(fā)的調(diào)試系統(tǒng)及方法
- 樓宇設(shè)備的異地調(diào)試控制方法、裝置和計算機設(shè)備
- 一種芯片調(diào)試系統(tǒng)及芯片調(diào)試方法





