远程读、写嵌入式Linux应用程序内存变量值的方法及装置制造方法及图纸

技术编号:14902029 阅读:245 留言:0更新日期:2017-03-29 17:25
本发明专利技术涉及一种远程读、写嵌入式Linux应用程序内存变量值的方法及装置,属于计算机技术领域。本发明专利技术通过在目标Linux机上运行主控程序,主控进程对要读、写的进程(称之为受控进程)管理,并在把本地显示机上的变量值读、写命令发给受控进程,然后把结果返回到本地显示机上进行显示,实现了从本地显示机上对Linux目标机相关进程中变量值的远程读、写。本发明专利技术能够保留运行的环境数据,并能对变量值进行针对性的修改以进行逻辑测试验证,对现场测试、分析解析问题提供了技术支撑,实现了快捷、方便的维护与诊断,达到节省人力、物力的目的。

Method and device for remote reading and writing memory variable value of embedded Linux application program

The invention relates to a method and a device for remote reading and writing the memory variable value of an embedded Linux application program, which belongs to the technical field of computer. The main control program is running in the Linux machine, the process of the master process to read and write (called controlled process) management, and in the local display on the value of the variable read and write commands to the controlled process, then the results back to the local display machine on display, realization from the local display remote reading and write variables on the machine Linux machine in the process of value target. The invention can keep the environment data operation, and the variable value of modified by logical test, provide technical support for on-site testing, analysis of problems, to achieve a fast, convenient maintenance and diagnosis, save manpower and material resources.

【技术实现步骤摘要】

本专利技术涉及一种远程读、写嵌入式Linux应用程序内存变量值的方法及装置,属于计算机

技术介绍
随着Linux技术的不断发展,特别是嵌入式Linux技术日趋成熟,嵌入式Linux设备越来越多。多数嵌入式Linux设备没有桌面级Linux的硬件资源,其中运行的应用程序运行状态信息监视缺少简便有效的手段,例如:无硬盘,只有FLASH,程序日志信息只记录一些重大的错误性的信息;没有显示屏,相当于一个“黑盒子”,无法直观输出程序实时信息等。对于这样的嵌入式“黑盒子”,如何获取程序运行状态,来判断是否运行正常,特别是设备运行不正常时,如何定位问题的所在,成为了亟待解决的问题。一般的程序状态读取方法是通过仿真器,对于开发阶段的设备是可行的,但对于在现场正在运行的程序,不具备这样的条件。特别是对于发布的产品来说,因为测试的比较充分,在现场出问题时基本上重现困难,设备运行不正常时,程序的异常信息即使存储于设备中,如果用仿真器重新运行,这些信息就会丢失。这就要求有在线程序状态读取、修改的方法。虽然有些嵌入式Linux应用针对性的配置了网络日志,但日志的缺点也很明显:事先确定输出信息,要求对所有逻辑进行日志信息输出,一方面是加大了日志逻辑的列举难度,日志条目过多,另一方面也加大了应用程序占用的内存容量。也有些嵌入式Linux应用使用远程调试器,例如:GDBServer,进行远程内存变量值读写,但其使用依赖系统中断,在读写期会导致应用程序运行暂停,这对于实时性要求高的应用,无法保证运行的准确性,例如:在数据采集程序中可能会因为程序暂停导致采集数据丢失。
技术实现思路
本专利技术的目的是提供一种远程读、写嵌入式Linux应用程序内存变量值的方法及装置,以解决目前远程读、写嵌入式Linux应用程序中会加大应用程序占用内存容量、问题重现困难等问题。本专利技术为解决上述技术问题而提供一种远程读、写嵌入式Linux应用程序内存变量值的方法,该方法包括以下步骤:1)本地显示机打开要操作的应用程序,并解析出应用程序的变量名、类型和地址;2)将本地显示机通过网络连接到目标Linux机的主控进程,获取各受控进程名和受控进程ID,并将步骤1)解析的程序文件关联到同名受控进程;3)根据应用程序对应的目标进程中的变量名、类型和地址,进行变量值的读、写操作。进一步地,所述读操作的步骤为:A.在本地显示机上选择一个或多个目标变量,并根据变量的类型计算出其在目标机上所占用内存的字节数信息;B.向目标机主控进程发送包含有进程ID、内存起始地址和读取字节数的读进程内存命令;C.主控进程收到命令后进行判断,若目标进程为主控进程本身时,根据该命令判断内存地址和字节数是否有效,若有效,则读取对应内存数据;当目标进程不是主控进程时,主控进程从受控进程表中查找目标进程,并将命令发给目标进程,由目标进程判断内存地址和字节数是否有效,有效则读取对应内存数据,并发给主控进程;D.主控进程将读取的内存数据返回给本地显示机,本地显示机根据目标机的字节序和变量的类型长度进行数据转换,并显示到界面上,以实现对目标机变量的读取。进一步地,所述写操作的步骤为:a.在本地显示机上选择一个变量值进行修改,并根据所选变量类型、地址和目标机字节序将其转换为字节数据信息;b.向目标机主控进程发送包含有进程ID、内存起始地址、写字节数和数据的写进程内存命令;c.主控进程收到命令后,若目标进程为主控进程本身时,根据该命令判断内存地址和字节数是否有效,若有效,则写对应内存数据;当目标进程不是主控进程时,主控进程从受控进程表中查找目标进程,并将命令发给目标进程,由目标进程判断内存地址和字节数是否有效,有效则写对应内存数据,并将结果发送给主控进程;d.主控进程将结果返回给本地显示机,由本地显示机更新相应的界面变量值。进一步地,若所解析的应用程序文件目录下存在.so动态库,依次读取其关联进程中该动态库的加载地址,并根据加载地址调整动态库中变量的地址。进一步地,受控进程定时向主控进程发送心跳信息,如果受控进程不在受控进程列表中,则注册到列表中;若列表中的受控进程心跳在设定时间内没有更新,则删除该受控进程。本专利技术还提供了一种远程读、写嵌入式Linux应用程序内存变量值的装置,该装置包括本地显示机,该本地显示机用于与远程目标机通信连接,远程目标机上运行有嵌入式Linux应用程序,所述的本地显示机用于打开要操作的应用程序,并解析出应用程序的变量名、类型和地址;所述的本地显示机还通过网络连接到目标Linux机的主控进程,获取各受控进程名和受控进程ID,并将解析的程序文件关联到同名受控进程;所述本地显示机还用于根据应用程序对应的目标进程中的变量名、类型和地址进行变量值的读、写操作。进一步地,所述读操作的步骤为:A.在本地显示机上选择一个或多个目标变量,并根据变量的类型计算出其在目标机上所占用内存的字节数信息;B.向目标机主控进程发送包含有进程ID、内存起始地址和读取字节数的读进程内存命令;C.主控进程收到命令后进行判断,若目标进程为主控进程本身时,根据该命令判断内存地址和字节数是否有效,若有效,则读取对应内存数据;当目标进程不是主控进程时,主控进程从受控进程表中查找目标进程,并将命令发给目标进程,由目标进程判断内存地址和字节数是否有效,有效则读取对应内存数据,并发给主控进程;D.主控进程将读取的内存数据返回给本地显示机,本地显示机根据目标机的字节序和变量的类型长度进行数据转换,并显示到界面上,以实现对目标机变量的读取。进一步地,所述写操作的步骤为:a.在本地显示机上选择一个变量值进行修改,并根据所选变量类型、地址和目标机字节序将其转换为字节数据信息;b.向目标机主控进程发送包含有进程ID、内存起始地址、写字节数和数据的写进程内存命令;c.主控进程收到命令后,若目标进程为主控进程本身时,根据该命令判断内存地址和字节数是否有效,若有效,则写对应内存数据;当目标进程不是主控进程时,主控进程从受控进程表中查找目标进程,并将命令发给目标进程,由目标进程判断内存地址和字节数是否有效,有效则写对应内存数据,并将结果发送给主控进程;d.主控进程将结果返回给本地显示机,由本地显示机更新相应的界面变量值。进一步地,若所解析的应用程序文件目录下存在.so动态库,本地显示机依次读取其关联进程中该动态库的加载地址,并根据加载地址调整动态库中变量的地址。进一步地,受控进程定时向主控进程发送心跳信息,如果受控进程不在受控进程列表中,则注册到列表中;若列表中的受控进程心跳在设定时间内没有更新,则删除该受控进程。本专利技术的有益效果是:本专利技术通过在目标Linux机上运行主控程序,主控进程对要读、写的进程(称之为受控进程)管理,并在把本地显示机上的变量值读、写命令发给受控进程,然后把结果返回到本地显示机上进行显示,实现了从本地显示机上对Linux目标机相关进程中变量值的远程读、写。本专利技术能够保留运行的环境数据,并能对变量值进行针对性的修改以进行逻辑测试验证,对现场测试、分析解析问题提供了技术支撑,实现了快捷、方便的维护与诊断,达到节省人力、物力的目的。附图说明图1是本专利技术远程读、写嵌入式Linux应用程序内存变量值的原理图;图2是本专利技术远程读、本文档来自技高网...
远程读、写嵌入式Linux应用程序内存变量值的方法及装置

【技术保护点】
远程读、写嵌入式Linux应用程序内存变量值的方法,其特征在于,该方法包括以下步骤:1)本地显示机打开要操作的应用程序,并解析出应用程序的变量名、类型和地址;2)将本地显示机通过网络连接到目标Linux机的主控进程,获取各受控进程名和受控进程ID,并将步骤1)解析的程序文件关联到同名受控进程;3)根据应用程序对应的目标进程中的变量名、类型和地址,进行变量值的读、写操作。

【技术特征摘要】
1.远程读、写嵌入式Linux应用程序内存变量值的方法,其特征在于,该方法包括以下步骤:1)本地显示机打开要操作的应用程序,并解析出应用程序的变量名、类型和地址;2)将本地显示机通过网络连接到目标Linux机的主控进程,获取各受控进程名和受控进程ID,并将步骤1)解析的程序文件关联到同名受控进程;3)根据应用程序对应的目标进程中的变量名、类型和地址,进行变量值的读、写操作。2.根据权利要求1所述的远程读、写嵌入式Linux应用程序内存变量值的方法,其特征在于,所述读操作的步骤为:A.在本地显示机上选择一个或多个目标变量,并根据变量的类型计算出其在目标机上所占用内存的字节数信息;B.向目标机主控进程发送包含有进程ID、内存起始地址和读取字节数的读进程内存命令;C.主控进程收到命令后进行判断,若目标进程为主控进程本身时,根据该命令判断内存地址和字节数是否有效,若有效,则读取对应内存数据;当目标进程不是主控进程时,主控进程从受控进程表中查找目标进程,并将命令发给目标进程,由目标进程判断内存地址和字节数是否有效,有效则读取对应内存数据,并发给主控进程;D.主控进程将读取的内存数据返回给本地显示机,本地显示机根据目标机的字节序和变量的类型长度进行数据转换,并显示到界面上,以实现对目标机变量的读取。3.根据权利要求1所述的远程读、写嵌入式Linux应用程序内存变量值的方法,其特征在于,所述写操作的步骤为:a.在本地显示机上选择一个变量值进行修改,并根据所选变量类型、地址和目标机字节序将其转换为字节数据信息;b.向目标机主控进程发送包含有进程ID、内存起始地址、写字节数和数据的写进程内存命令;c.主控进程收到命令后,若目标进程为主控进程本身时,根据该命令判断内存地址和字节数是否有效,若有效,则写对应内存数据;当目标进程不是主控进程时,主控进程从受控进程表中查找目标进程,并将命令发给目标进程,由目标进程判断内存地址和字节数是否有效,有效则写对应内存数据,并将结果发送给主控进程;d.主控进程将结果返回给本地显示机,由本地显示机更新相应的界面变量值。4.根据权利要求1所述的远程读、写嵌入式Linux应用程序内存变量值的方法,其特征在于,若所解析的应用程序文件目录下存在.so动态库,依次读取其关联进程中该动态库的加载地址,并根据加载地址调整动态库中变量的地址。5.根据权利要求2或3所述的远程读、写嵌入式Linux应用程序内存变量值的方法,其特征在于,受控进程定时向主控进程发送心跳信息,如果受控进程不在受控进程列表中,则注册到列表中;若列表中的受控进程心跳在设定时间内没有更新,则删除该受控进程。6.远程读、写嵌入式Linux应用程序内存变量值的装置...

【专利技术属性】
技术研发人员:包伟蒋怀贞段太钢高建琨张鹏远李燕徐云松刘永华陈献庆王兴安胡叶宾孔波利金华蓉孙航飞卓怀忠
申请(专利权)人:许昌许继软件技术有限公司许继电气股份有限公司许继集团有限公司国家电网公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1