[發(fā)明專利]一種用于linux環(huán)境中的內(nèi)存池調(diào)試方法在審
| 申請?zhí)枺?/td> | 201710617729.7 | 申請日: | 2017-07-26 |
| 公開(公告)號: | CN107451054A | 公開(公告)日: | 2017-12-08 |
| 發(fā)明(設(shè)計)人: | 王鑫鵬;倪創(chuàng);陶琴;陳輝 | 申請(專利權(quán))人: | 武漢虹信通信技術(shù)有限責(zé)任公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F12/02 |
| 代理公司: | 武漢科皓知識產(chǎn)權(quán)代理事務(wù)所(特殊普通合伙)42222 | 代理人: | 嚴(yán)彥 |
| 地址: | 430073 湖北省*** | 國省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 用于 linux 環(huán)境 中的 內(nèi)存 調(diào)試 方法 | ||
1.一種用于linux環(huán)境中的內(nèi)存池調(diào)試方法,其特征在于:用內(nèi)存池來管理動態(tài)申請的內(nèi)存,在內(nèi)存塊的管理結(jié)構(gòu)中存儲debug信息,實現(xiàn)方式如下,
在程序啟動時,將進(jìn)程的虛擬地址映射表輸出到一個文件里保存,用于函數(shù)調(diào)用棧地址和代碼位置的轉(zhuǎn)換;
之后創(chuàng)建和初始化內(nèi)存池,內(nèi)存池里的內(nèi)存按業(yè)務(wù)需求分成不同大小的內(nèi)存塊,每個內(nèi)存塊都有一個管理結(jié)構(gòu)用于內(nèi)存池對內(nèi)存塊進(jìn)行管理,管理結(jié)構(gòu)對用戶不可見;內(nèi)存塊的管理結(jié)構(gòu)內(nèi)有鏈表結(jié)構(gòu),用于將同類型的同狀態(tài)內(nèi)存塊連接起來,大小相同的狀態(tài)相同的內(nèi)存塊在一個鏈表中;
申請內(nèi)存時,從內(nèi)存池中取相應(yīng)大小的內(nèi)存塊返回給用戶,并在內(nèi)存塊的管理結(jié)構(gòu)中存儲申請時的函數(shù)調(diào)用棧地址;釋放內(nèi)存時,將要釋放的內(nèi)存塊返回給內(nèi)存池,并在內(nèi)存塊的管理結(jié)構(gòu)中存儲釋放時的函數(shù)調(diào)用棧地址;
出現(xiàn)問題時,將存儲的函數(shù)調(diào)用棧地址轉(zhuǎn)換成代碼位置,支持直接定位bug出現(xiàn)的代碼位置。
2.根據(jù)權(quán)利要求1所述用于linux環(huán)境中的內(nèi)存池調(diào)試方法,其特征在于:內(nèi)存塊的管理結(jié)構(gòu)內(nèi)有標(biāo)記表明此內(nèi)存塊是inuse或free的狀態(tài),如果對一個free的內(nèi)存塊進(jìn)行釋放操作,就是double free狀態(tài);inuse表示被申請狀態(tài),free表示空閑未被申請的狀態(tài),double free表示重復(fù)釋放狀態(tài)。
3.根據(jù)權(quán)利要求1所述用于linux環(huán)境中的內(nèi)存池調(diào)試方法,其特征在于:申請內(nèi)存時是從對應(yīng)大小的空閑內(nèi)存塊鏈表free list里取一個內(nèi)存塊返回給用戶使用,同時放置到對應(yīng)大小的被分配內(nèi)存塊鏈表inuse list中。
4.根據(jù)權(quán)利要求1所述用于linux環(huán)境中的內(nèi)存池調(diào)試方法,其特征在于:內(nèi)存池里的內(nèi)存塊被創(chuàng)建出來后,不能被銷毀,內(nèi)存的申請和釋放只是將內(nèi)存塊在內(nèi)存池的不同鏈表間轉(zhuǎn)換,支持保留內(nèi)存塊管理結(jié)構(gòu)內(nèi)存儲的debug信息。
5.根據(jù)權(quán)利要求1所述用于linux環(huán)境中的內(nèi)存池調(diào)試方法,其特征在于:在啟動時存儲進(jìn)程的虛擬地址映射表,在申請和釋放內(nèi)存時都獲取函數(shù)棧地址存儲到內(nèi)存塊的管理結(jié)構(gòu)中。
6.根據(jù)權(quán)利要求1或2或3或4或5所述用于linux環(huán)境中的內(nèi)存池調(diào)試方法,其特征在于:記錄函數(shù)調(diào)用棧地址是調(diào)用__builtin_return_address(n),此調(diào)用返回一個int的整數(shù),作為棧地址存儲到內(nèi)存塊的管理結(jié)構(gòu)中;其中n表示棧的層數(shù),調(diào)用__builtin_return_address(n)表示返回第n層的棧地址。
7.根據(jù)權(quán)利要求1或2或3或4或5所述用于linux環(huán)境中的內(nèi)存池調(diào)試方法,其特征在于:將函數(shù)調(diào)用棧地址還原為代碼位置是使用linux的工具addr2line和之前記錄的虛擬地址映射表。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于武漢虹信通信技術(shù)有限責(zé)任公司,未經(jīng)武漢虹信通信技術(shù)有限責(zé)任公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710617729.7/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 環(huán)境服務(wù)系統(tǒng)以及環(huán)境服務(wù)事業(yè)
- 環(huán)境控制裝置、環(huán)境控制方法、環(huán)境控制程序及環(huán)境控制系統(tǒng)
- 環(huán)境檢測終端和環(huán)境檢測系統(tǒng)
- 環(huán)境調(diào)整系統(tǒng)、環(huán)境調(diào)整方法及環(huán)境調(diào)整程序
- 環(huán)境估計裝置和環(huán)境估計方法
- 用于環(huán)境艙的環(huán)境控制系統(tǒng)及環(huán)境艙
- 車輛環(huán)境的環(huán)境數(shù)據(jù)處理
- 環(huán)境取樣動力頭、環(huán)境取樣方法
- 環(huán)境艙環(huán)境控制系統(tǒng)
- 環(huán)境檢測儀(環(huán)境貓)





