[發(fā)明專利]一種函數(shù)調(diào)用關(guān)系的獲取方法和裝置有效
| 申請?zhí)枺?/td> | 201210523735.3 | 申請日: | 2012-12-07 |
| 公開(公告)號: | CN103853603B | 公開(公告)日: | 2018-03-13 |
| 發(fā)明(設(shè)計(jì))人: | 阮輝;郭朝楠;謝平 | 申請(專利權(quán))人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 北京三高永信知識產(chǎn)權(quán)代理有限責(zé)任公司11138 | 代理人: | 羅振安 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 函數(shù) 調(diào)用 關(guān)系 獲取 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種函數(shù)調(diào)用關(guān)系的獲取方法和裝置。
背景技術(shù)
在大型軟件開發(fā)過程中,特別是在多人協(xié)作的開發(fā)場景中,經(jīng)常需要構(gòu)造程序執(zhí)行過程中函數(shù)調(diào)用關(guān)系圖,以使開發(fā)者根據(jù)函數(shù)調(diào)用關(guān)系圖理解程序或者程序片段在實(shí)際執(zhí)行時(shí)的動(dòng)態(tài)行為。
目前現(xiàn)有技術(shù)存在獲取函數(shù)調(diào)用關(guān)系的方法,可以通過該方法獲取程序運(yùn)行過程中調(diào)用函數(shù)的函數(shù)調(diào)用關(guān)系圖;但是在程序執(zhí)行的過程中,如果存在多個(gè)進(jìn)程或多個(gè)線程同時(shí)執(zhí)行相同函數(shù)時(shí),通過現(xiàn)有技術(shù)只獲取到一個(gè)函數(shù)調(diào)用關(guān)系圖,而這與程序?qū)嶋H執(zhí)行流不符。
發(fā)明內(nèi)容
為了在程序運(yùn)行的過程中,如果存在多個(gè)進(jìn)程或多個(gè)線程同時(shí)運(yùn)行相同函數(shù)時(shí),構(gòu)造出與程序?qū)嶋H執(zhí)行流相符的函數(shù)調(diào)用關(guān)系圖,本發(fā)明提供了一種函數(shù)調(diào)用關(guān)系的獲取方法和裝置。所述技術(shù)方案如下:
一種函數(shù)調(diào)用關(guān)系的獲取方法,所述方法包括:
當(dāng)程序運(yùn)行過程中調(diào)用函數(shù)時(shí),獲取所述函數(shù)的函數(shù)信息,所述函數(shù)信息包括所述函數(shù)的入口地址、出口地址、所述函數(shù)所在文件的文件信息在信息列表中的序號,所述信息列表用于存儲文件的文件信息;
獲取用于運(yùn)行所述函數(shù)的執(zhí)行單元,所述執(zhí)行單元包括進(jìn)程或線程;
根據(jù)所述執(zhí)行單元運(yùn)行的函數(shù)的函數(shù)信息構(gòu)造所述執(zhí)行單元對應(yīng)的函數(shù)調(diào)用關(guān)系圖;
其中,所述獲取所述函數(shù)所在文件的文件信息在信息列表中的序號,包括:
根據(jù)所述函數(shù)的入口地址,判斷所述函數(shù)是否為程序中包含的函數(shù);
如果所述函數(shù)是所述程序中包含的函數(shù),判斷序號空間中是否包括所述程序所在文件的文件信息在信息列表中的序號,如果所述序號空間中包括所述程序所在文件的文件信息在所述信息列表中的序號,則將所述序號空間包括的所述程序所在文件的文件信息在所述信息列表中的序號確定為所述函數(shù)所在文件的文件信息在所述信息列表中的序號。
所述方法還包括:
如果所述序號空間為空,則獲取所述函數(shù)所在文件的文件信息,將所述函數(shù)所在文件的文件信息存儲在所述信息列表中,設(shè)置所述函數(shù)所在文件的文件信息在所述信息列表中的序號,將所述函數(shù)所在文件的文件信息在所述信息列表中的序號存儲在所述序號空間中。
所述方法還包括:
如果所述函數(shù)不是所述程序中包含的函數(shù),則判斷出所述函數(shù)為動(dòng)態(tài)鏈接庫包含的函數(shù),根據(jù)所述函數(shù)的入口地址查找所述信息列表,當(dāng)查找出所述信息列表中存在所述動(dòng)態(tài)鏈接庫所在文件的文件信息,則將所述動(dòng)態(tài)鏈接庫所在文件的文件信息在所述信息列表中的序號確定為所述函數(shù)所在文件的文件信息在所述信息列表中的序號。
所述方法還包括:
當(dāng)查找出所述信息列表中不存在所述動(dòng)態(tài)鏈接庫所在文件的文件信息,獲取所述動(dòng)態(tài)鏈接庫所在文件的文件信息,將所述動(dòng)態(tài)鏈接庫所在文件的文件信息存儲在所述信息列表中,設(shè)置所述動(dòng)態(tài)鏈接庫所在文件的文件信息在所述信息列表中的序號。
所述根據(jù)所述執(zhí)行單元對應(yīng)的函數(shù)的函數(shù)信息構(gòu)造所述執(zhí)行單元對應(yīng)的函數(shù)調(diào)用關(guān)系圖之后,還包括:
從所述執(zhí)行單元對應(yīng)的函數(shù)調(diào)用關(guān)系圖中過濾系統(tǒng)函數(shù)及所述系統(tǒng)函數(shù)的調(diào)用關(guān)系。
所述從所述執(zhí)行單元對應(yīng)的函數(shù)調(diào)用關(guān)系圖中過濾系統(tǒng)函數(shù)的調(diào)用關(guān)系,包括:
計(jì)算所述執(zhí)行單元對應(yīng)的函數(shù)調(diào)用關(guān)系圖中包括的函數(shù)的入度和出度,所述函數(shù)的入度為調(diào)用所述函數(shù)的函數(shù)的個(gè)數(shù),所述函數(shù)的出度為所述函數(shù)調(diào)用的函數(shù)的個(gè)數(shù);
過濾出度為零的系統(tǒng)函數(shù)及所述系統(tǒng)函數(shù)的調(diào)用關(guān)系,減少調(diào)用所述系統(tǒng)函數(shù)的函數(shù)的出度;
過濾入度為1且出度為1的系統(tǒng)函數(shù)及所述系統(tǒng)函數(shù)的調(diào)用關(guān)系,增加調(diào)用所述系統(tǒng)函數(shù)的函數(shù)和所述系統(tǒng)函數(shù)調(diào)用的函數(shù)之間的調(diào)用關(guān)系;
根據(jù)所述函數(shù)調(diào)用關(guān)系圖中包括的剩下函數(shù)的函數(shù)信息重新構(gòu)建函數(shù)調(diào)用關(guān)系圖,計(jì)算所述函數(shù)調(diào)用關(guān)系圖包括的函數(shù)的出度和入度;
過濾入度為零的系統(tǒng)函數(shù)及所述系統(tǒng)函數(shù)的調(diào)用關(guān)系,以及減少所述系統(tǒng)調(diào)用的函數(shù)的入度。
所述獲取所述函數(shù)的函數(shù)信息之前,還包括:
接收開始時(shí)間和結(jié)束時(shí)間,在所述開始時(shí)間和所述結(jié)束時(shí)間之間設(shè)置記錄標(biāo)識為真;
所述獲取所述函數(shù)的函數(shù)信息,包括:
當(dāng)程序運(yùn)行過程中調(diào)用函數(shù)時(shí),對所述記錄標(biāo)識進(jìn)行判斷,如果所述記錄標(biāo)識為真,則獲取所述函數(shù)的函數(shù)信息。
一種函數(shù)調(diào)用關(guān)系的獲取裝置,所述裝置包括:
該專利技術(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/201210523735.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- IDL調(diào)用裝置及調(diào)用方法
- 調(diào)用方法及調(diào)用系統(tǒng)
- 一種服務(wù)調(diào)用方法及裝置
- 服務(wù)調(diào)用方法、服務(wù)調(diào)用裝置及服務(wù)調(diào)用系統(tǒng)
- 組件調(diào)用方法、裝置及計(jì)算機(jī)可讀存儲介質(zhì)
- 身份驗(yàn)證方法及裝置
- 系統(tǒng)調(diào)用處理方法、裝置、計(jì)算機(jī)設(shè)備和存儲介質(zhì)
- 一種數(shù)據(jù)調(diào)用方法、裝置、電子設(shè)備及存儲介質(zhì)
- 一種微服務(wù)請求重試的方法及終端
- 業(yè)務(wù)數(shù)據(jù)的處理方法、裝置及系統(tǒng)





