基于linux共享内存数据镜像的程序跟踪方法和系统技术方案

技术编号:23604514 阅读:59 留言:0更新日期:2020-03-28 05:39
本发明专利技术公开了一种基于linux共享内存数据镜像的程序跟踪方法和系统,所述方法包括:被跟踪程序在系统中创建一份程序的原本内部变量空间后,通过linux的shmget、shmat系统函数创建共享内存空间,所述共享内存空间作为所述原本内部变量空间的一个副本;被跟踪程序在运行中对变量的数据内容进行修改时,同步修改所述共享内存空间中的变量副本的数据内容;调试工具通过shmget、shmat系统函数找到并连接所述共享内存空间,并在收到调试跟踪指令时读取所述共享内存空间中的变量副本的数据内容,本发明专利技术调试过程不会影响程序内部的变量数值和原程序的运行结果,调试非常灵活,可以实现对被跟踪程序的变量实时查看和跟踪。

Program tracking method and system based on Linux shared memory data image

【技术实现步骤摘要】
基于linux共享内存数据镜像的程序跟踪方法和系统
本专利技术涉及数据调试领域,尤其涉及一种基于linux共享内存数据镜像的程序跟踪方法和系统。
技术介绍
目前大部分的linux程序常规调试有gdb、加printf输出日志等方法打印一些开发人员或者维护人员需要关注的固定信息,这些方法确实非常实用和高效,是linux平台下程序员常用的调试方法,但是这些方法在应用程序会增加额外的开销,所以在正式版本中,可能会关闭调试代码。
技术实现思路
本专利技术要解决的技术问题在于,提供一种新的调试方法,可以便于用户实时查看程序运行时的内部变量数据的当前值和状态变化情况,而且调试过程不会影响程序内部的变量数值和原程序的运行结果。本专利技术解决其技术问题所采用的技术方案是:构造一种基于linux共享内存数据镜像的程序跟踪方法,所述方法包括:被跟踪程序在系统中创建一份程序的原本内部变量空间后,通过linux的shmget、shmat系统函数创建共享内存空间,所述共享内存空间作为所述原本内部变量空间的一个副本;<br>被跟踪程序在运本文档来自技高网...

【技术保护点】
1.一种基于linux共享内存数据镜像的程序跟踪方法,其特征在于,所述方法包括:/n被跟踪程序在系统中创建一份程序的原本内部变量空间后,通过linux的shmget、shmat系统函数创建共享内存空间,所述共享内存空间作为所述原本内部变量空间的一个副本;/n被跟踪程序在运行中对变量的数据内容进行修改时,同步修改所述共享内存空间中的变量副本的数据内容;/n调试工具通过shmget、shmat系统函数找到并连接所述共享内存空间,并在收到调试跟踪指令时读取所述共享内存空间中的变量副本的数据内容。/n

【技术特征摘要】
1.一种基于linux共享内存数据镜像的程序跟踪方法,其特征在于,所述方法包括:
被跟踪程序在系统中创建一份程序的原本内部变量空间后,通过linux的shmget、shmat系统函数创建共享内存空间,所述共享内存空间作为所述原本内部变量空间的一个副本;
被跟踪程序在运行中对变量的数据内容进行修改时,同步修改所述共享内存空间中的变量副本的数据内容;
调试工具通过shmget、shmat系统函数找到并连接所述共享内存空间,并在收到调试跟踪指令时读取所述共享内存空间中的变量副本的数据内容。


2.根据权利要求1所述的方法,其特征在于,所述的通过linux的shmget、shmat系统函数创建共享内存空间,包括:
定义用于指向所述共享内存空间的数据指针;
通过shmget系统函数创建一份同原本内部变量空间的副本作为所述共享内存空间;
通过shmat系统函数将所述共享内存空间映射到所述数据指针上。


3.根据权利要求2所述的方法,其特征在于,所述的同步修改所述共享内存空间中的变量副本的数据内容,包括:
在被跟踪程序在运行中对某个变量的数据内容进行修改后,通过所述数据指针找到所述某个变量的变量副本,并将所述某个变量的数据内容赋值给所述变量副本。


4.根据权利要求1所述的方法,其特征在于,所述的调试工具通过shmget、shmat系统函数找到并连接所述共享内存空间,包括:
调试工具定义用于指向所述共享内存空间的数据指针;
通过shmget系统函数得到被跟踪程序所创建的所述共享内存空间;
通过shmat系统函数将所述共享内存空间映射到所述数据指针上,并以只读方式连接...

【专利技术属性】
技术研发人员:郑吉祥
申请(专利权)人:深圳市盛弘电气股份有限公司
类型:发明
国别省市:广东;44

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

1