[发明专利]一种运行时程序信息获取方法有效
申请号: | 201710293491.7 | 申请日: | 2017-04-28 |
公开(公告)号: | CN107168870B | 公开(公告)日: | 2021-10-29 |
发明(设计)人: | 林禹;林畅辉 | 申请(专利权)人: | 福建星瑞格软件有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 福州市鼓楼区京华专利事务所(普通合伙) 35212 | 代理人: | 林晓琴 |
地址: | 350000 福建省福州市鼓楼*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 运行 程序 信息 获取 方法 | ||
本发明提供一种运行时程序信息获取方法,包括如下步骤:步骤1、创建一外部程序,所述外部程序包括方法指针注册模块;步骤2、启动源程序,通过操作系统库调用所述外部程序的方法指针注册模块,将源程序的函数地址传给所述外部程序;步骤3、所述外部程序根据所述函数地址获取所述源程序的内部信息。本发明方法避免对源程序的过渡修改与侵入,保证源程序完整性,提高后续源程序的分析效率。
技术领域
本发明涉及数据分析技术领域,尤其涉及一种高效的运行时程序内部函数指针、变量等获取方法。
背景技术
现有的软件开发中,经常需要对源程序进行分析与调优等操作,这些操作都需要对运行时程序内部信息进行追踪,例如,在源程序二次开发过程中,需要事先对源程序进行分析,会涉及到对源程序内部信息的获取与追踪,在软件单元测试中,也会涉及源程序信息获取。
目前源程序分析中获取内部信息的主流的做法是:(1)在源程序中加入很多的打印语句去打印出局部变量或全局变量;(2)利用gdb等其他第三方工具去运行源程序,从而单步运行观察局部变量和全局变量,在大项目中,工作量极大。
对于软件单元测试,也因不容易获取内部函数信息,常通过预先设定输入参数,并给出期待值,然后对方法的返回值和期待值做对比,这种方式需要搭建测试环境、准备输入输出比较麻烦,效率不高。
因此,急需一种高效率的,又能尽可能减少对源程序的修改与侵入的运行时程序内部数据获取方法,提高源程序分析效率。
发明内容
本发明要解决的技术问题,在于提供一种运行时程序信息获取方法,避免对源程序的过渡修改与侵入,保证源程序完整性,提高后续源程序的分析效率。
本发明是这样实现的:一种运行时程序信息获取方法,包括如下步骤:
步骤1、创建一外部程序,所述外部程序包括方法指针注册模块;
步骤2、启动源程序,通过操作系统库调用所述外部程序的方法指针注册模块,将源程序的函数地址传给所述外部程序;
步骤3、所述外部程序根据所述函数地址获取所述源程序的内部信息。
进一步的,所述操作系统库为Windows的DLL库或Linux的libdl.so库。
进一步的,所述内部信息包括线程ID和全局变量。
本发明具有如下优点:通过把源程序的接口暴露给外部程序,由外部程序去调用主程序获取内部变量,从而进一步获取源程序的内部信息,无需对源程序进行大量修改操作,保证了源程序的完整性,极大的降低了因源程序的修改与侵入对分析结果造成的影响,大大提高源程序分析效率。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明一种运行时程序信息获取方法流程图。
具体实施方式
如图1所示,本发明一种运行时程序信息获取方法,包括如下步骤:
步骤1、创建一外部程序,所述外部程序包括方法指针注册模块,所述外部程序还包括一用于存储内部信息的存储模块;
步骤2、启动源程序,通过操作系统库调用所述外部程序的方法指针注册模块,将源程序的函数地址传给所述外部程序,所述操作系统库为Windows的DLL库或Linux的libdl.so库;
步骤3、所述外部程序根据所述函数地址获取所述源程序的内部信息,所述内部信息包括线程ID和全局变量。
实施例一
在轻量级线程分析中,以Linux系统为例,采用本发明方法获取轻量级线程ID的方法如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建星瑞格软件有限公司,未经福建星瑞格软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710293491.7/2.html,转载请声明来源钻瓜专利网。
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置