[发明专利]基于linux共享内存数据镜像的程序跟踪方法和系统在审
申请号: | 201911005324.3 | 申请日: | 2019-10-22 |
公开(公告)号: | CN110928768A | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 郑吉祥 | 申请(专利权)人: | 深圳市盛弘电气股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/54 |
代理公司: | 深圳市顺天达专利商标代理有限公司 44217 | 代理人: | 郭伟刚 |
地址: | 518054 广东省深圳市南山区西*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 linux 共享 内存 数据 程序 跟踪 方法 系统 | ||
本发明公开了一种基于linux共享内存数据镜像的程序跟踪方法和系统,所述方法包括:被跟踪程序在系统中创建一份程序的原本内部变量空间后,通过linux的shmget、shmat系统函数创建共享内存空间,所述共享内存空间作为所述原本内部变量空间的一个副本;被跟踪程序在运行中对变量的数据内容进行修改时,同步修改所述共享内存空间中的变量副本的数据内容;调试工具通过shmget、shmat系统函数找到并连接所述共享内存空间,并在收到调试跟踪指令时读取所述共享内存空间中的变量副本的数据内容,本发明调试过程不会影响程序内部的变量数值和原程序的运行结果,调试非常灵活,可以实现对被跟踪程序的变量实时查看和跟踪。
技术领域
本发明涉及数据调试领域,尤其涉及一种基于linux共享内存数据镜像的程序跟踪方法和系统。
背景技术
目前大部分的linux程序常规调试有gdb、加printf输出日志等方法打印一些开发人员或者维护人员需要关注的固定信息,这些方法确实非常实用和高效,是linux平台下程序员常用的调试方法,但是这些方法在应用程序会增加额外的开销,所以在正式版本中,可能会关闭调试代码。
发明内容
本发明要解决的技术问题在于,提供一种新的调试方法,可以便于用户实时查看程序运行时的内部变量数据的当前值和状态变化情况,而且调试过程不会影响程序内部的变量数值和原程序的运行结果。
本发明解决其技术问题所采用的技术方案是:构造一种基于linux共享内存数据镜像的程序跟踪方法,所述方法包括:
被跟踪程序在系统中创建一份程序的原本内部变量空间后,通过linux的shmget、shmat系统函数创建共享内存空间,所述共享内存空间作为所述原本内部变量空间的一个副本;
被跟踪程序在运行中对变量的数据内容进行修改时,同步修改所述共享内存空间中的变量副本的数据内容;
调试工具通过shmget、shmat系统函数找到并连接所述共享内存空间,并在收到调试跟踪指令时读取所述共享内存空间中的变量副本的数据内容。
优选地,所述的通过linux的shmget、shmat系统函数创建共享内存空间,包括:
定义用于指向所述共享内存空间的数据指针;
通过shmget系统函数创建一份同原本内部变量空间的副本作为所述共享内存空间;
通过shmat系统函数将所述共享内存空间映射到所述数据指针上。
优选地,所述的同步修改所述共享内存空间中的变量副本的数据内容,包括:
在被跟踪程序在运行中对某个变量的数据内容进行修改后,通过所述数据指针找到所述某个变量的变量副本,并将所述某个变量的数据内容赋值给所述变量副本。
优选地,所述的调试工具通过shmget、shmat系统函数找到并连接所述共享内存空间,包括:
调试工具定义用于指向所述共享内存空间的数据指针;
通过shmget系统函数得到被跟踪程序所创建的所述共享内存空间;
通过shmat系统函数将所述共享内存空间映射到所述数据指针上,并以只读方式连接到所述共享内存空间映上。
本发明另一方面还公开了一种基于linux共享内存数据镜像的程序跟踪系统,包括运行于系统上的被跟踪程序和调试工具,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市盛弘电气股份有限公司,未经深圳市盛弘电气股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911005324.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:马卡龙糕点挤料装置
- 下一篇:一种高效提取药酒装置