欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種運行時程序信息獲取方法與流程

文檔序號:11250788閱讀:277來源:國知局

本發(fā)明涉及數(shù)據(jù)分析技術(shù)領(lǐng)域,尤其涉及一種高效的運行時程序內(nèi)部函數(shù)指針、變量等獲取方法。



背景技術(shù):

現(xiàn)有的軟件開發(fā)中,經(jīng)常需要對源程序進行分析與調(diào)優(yōu)等操作,這些操作都需要對運行時程序內(nèi)部信息進行追蹤,例如,在源程序二次開發(fā)過程中,需要事先對源程序進行分析,會涉及到對源程序內(nèi)部信息的獲取與追蹤,在軟件單元測試中,也會涉及源程序信息獲取。

目前源程序分析中獲取內(nèi)部信息的主流的做法是:(1)在源程序中加入很多的打印語句去打印出局部變量或全局變量;(2)利用gdb等其他第三方工具去運行源程序,從而單步運行觀察局部變量和全局變量,在大項目中,工作量極大。

對于軟件單元測試,也因不容易獲取內(nèi)部函數(shù)信息,常通過預先設(shè)定輸入?yún)?shù),并給出期待值,然后對方法的返回值和期待值做對比,這種方式需要搭建測試環(huán)境、準備輸入輸出比較麻煩,效率不高。

因此,急需一種高效率的,又能盡可能減少對源程序的修改與侵入的運行時程序內(nèi)部數(shù)據(jù)獲取方法,提高源程序分析效率。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題,在于提供一種運行時程序信息獲取方法,避免對源程序的過渡修改與侵入,保證源程序完整性,提高后續(xù)源程序的分析效率。

本發(fā)明是這樣實現(xiàn)的:一種運行時程序信息獲取方法,包括如下步驟:

步驟1、創(chuàng)建一外部程序,所述外部程序包括方法指針注冊模塊;

步驟2、啟動源程序,通過操作系統(tǒng)庫調(diào)用所述外部程序的方法指針注冊模塊,將源程序的函數(shù)地址傳給所述外部程序;

步驟3、所述外部程序根據(jù)所述函數(shù)地址獲取所述源程序的內(nèi)部信息。

進一步的,所述操作系統(tǒng)庫為windows的dll庫或linux的libdl.so庫。

進一步的,所述內(nèi)部信息包括線程id和全局變量。

本發(fā)明具有如下優(yōu)點:通過把源程序的接口暴露給外部程序,由外部程序去調(diào)用主程序獲取內(nèi)部變量,從而進一步獲取源程序的內(nèi)部信息,無需對源程序進行大量修改操作,保證了源程序的完整性,極大的降低了因源程序的修改與侵入對分析結(jié)果造成的影響,大大提高源程序分析效率。

附圖說明

下面參照附圖結(jié)合實施例對本發(fā)明作進一步的說明。

圖1為本發(fā)明一種運行時程序信息獲取方法流程圖。

具體實施方式

如圖1所示,本發(fā)明一種運行時程序信息獲取方法,包括如下步驟:

步驟1、創(chuàng)建一外部程序,所述外部程序包括方法指針注冊模塊,所述外部程序還包括一用于存儲內(nèi)部信息的存儲模塊;

步驟2、啟動源程序,通過操作系統(tǒng)庫調(diào)用所述外部程序的方法指針注冊模塊,將源程序的函數(shù)地址傳給所述外部程序,所述操作系統(tǒng)庫為windows的dll庫或linux的libdl.so庫;

步驟3、所述外部程序根據(jù)所述函數(shù)地址獲取所述源程序的內(nèi)部信息,所述內(nèi)部信息包括線程id和全局變量。

實施例一

在輕量級線程分析中,以linux系統(tǒng)為例,采用本發(fā)明方法獲取輕量級線程id的方法如下:

創(chuàng)建一外部程序(libinstrument.so),包括一個方法指針注冊模塊和一個保存方法指針的變量(void(*callback)()=null);

啟動源程序,在程序入口(main函數(shù))通過dl庫(libdl.so庫的api)調(diào)用所述外部程序的方法指針注冊模塊(register_profile_func),把源程序內(nèi)部方法指針暴露給所述外部程序,并存儲到所述變量中;

所述外部程序得到內(nèi)部的方法指針后,根據(jù)所述方法指針可任意時刻調(diào)用并獲取內(nèi)部的線程id。

本實施例采用把源程序的接口暴露給外部程序,由外部程序調(diào)用源程序獲取內(nèi)部的輕量級線程id,幾乎不需要修改源程序,即可完成對輕量級線程信息的獲取,為后期源程序分析提供重要依據(jù)。

實施例二

在軟件單元測試中,采用本發(fā)明方法獲取源程序函數(shù)指針,進而調(diào)用主程序函數(shù)執(zhí)行測試,以windows系統(tǒng)下的軟件單元測試為例,具體包括如下步驟:

在dll庫中編寫測試代碼和外部程序,所述外部程序包括用于獲取函數(shù)地址的方法指針注冊模塊;

在源程序內(nèi),獲取dll庫操作權(quán),通過dll庫調(diào)用所述外部程序的方法指針注冊模塊,將所述源程序的內(nèi)部函數(shù)地址暴露給所述外部程序;

根據(jù)所述函數(shù)地址在dll庫中調(diào)用所述源程序函數(shù)執(zhí)行測試。

上述測試方法,較通過采集輸入輸出參數(shù)方式的測試快很多,大大提高測試效率,同時提高了測試質(zhì)量。

本發(fā)明中,除了可以獲取源程序的線程id外,根據(jù)需要還可以通過獲取內(nèi)部全局變量等,來跟蹤監(jiān)控源程序,便于后期分析。

本發(fā)明通過把源程序的接口暴露給外部程序,由外部程序調(diào)用源程序的方式,獲得源程序內(nèi)部信息,幾乎不需要修改源程序,即可完成對內(nèi)部信息的獲取,極大的保護了源程序的完整性,提高了內(nèi)部函數(shù)獲取效率,從而提高源程序分析效率。

雖然以上描述了本發(fā)明的具體實施方式,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當理解,我們所描述的具體的實施例只是說明性的,而不是用于對本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當涵蓋在本發(fā)明的權(quán)利要求所保護的范圍內(nèi)。



技術(shù)特征:

技術(shù)總結(jié)
本發(fā)明提供一種運行時程序信息獲取方法,包括如下步驟:步驟1、創(chuàng)建一外部程序,所述外部程序包括方法指針注冊模塊;步驟2、啟動源程序,通過操作系統(tǒng)庫調(diào)用所述外部程序的方法指針注冊模塊,將源程序的函數(shù)地址傳給所述外部程序;步驟3、所述外部程序根據(jù)所述函數(shù)地址獲取所述源程序的內(nèi)部信息。本發(fā)明方法避免對源程序的過渡修改與侵入,保證源程序完整性,提高后續(xù)源程序的分析效率。

技術(shù)研發(fā)人員:林禹;林暢輝
受保護的技術(shù)使用者:福建星瑞格軟件有限公司
技術(shù)研發(fā)日:2017.04.28
技術(shù)公布日:2017.09.15
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
东丽区| 淮南市| 永德县| 大英县| 石棉县| 札达县| 和静县| 信宜市| 阿鲁科尔沁旗| 日土县| 东乌| 上饶市| 原阳县| 淅川县| 益阳市| 渑池县| 淮阳县| 桓台县| 夏邑县| 珠海市| 海门市| 恭城| 民勤县| 河池市| 泰顺县| 教育| 宁陵县| 内乡县| 镇康县| 比如县| 长丰县| 儋州市| 通许县| 汉源县| 鹤峰县| 甘南县| 渝北区| 昔阳县| 惠来县| 额敏县| 衡阳县|