[发明专利]一种代码跟踪方法及装置有效
| 申请号: | 201611197658.1 | 申请日: | 2016-12-22 |
| 公开(公告)号: | CN108228448B | 公开(公告)日: | 2021-03-26 |
| 发明(设计)人: | 何启明 | 申请(专利权)人: | 中国移动通信集团公司;中国移动通信集团山东有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李相雨 |
| 地址: | 100033 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 代码 跟踪 方法 装置 | ||
本发明实施例公开了一种代码跟踪方法及装置。该方法包括:获取预建立插件采集的数据,所述预建立插件依附在的目标进程上;对获取到的数据进行性能热点分析,并根据分析结果确定目标接口;在生产环境下,对所述目标接口进行切片处理,提取出性能热点对应的程序片段;在测试环境下,跟踪处于运行状态的所述程序片段获取路径跟踪信息。本发明实施例通过采用切片的方式将性能热点从海量运行的代码中隔离开,并在测试环境下单独运行,与现有技术先比,无需对现有应用进行任何代码改造,具有跟踪精度高、灵活性强的优点。
技术领域
本发明实施例涉及通信技术领域,具体涉及一种代码跟踪方法及装置。
背景技术
基于J2EE架构的交易应用可以通过JVM Instrumentation(代码仪器)实现运行时代码注入,在不改变程序原貌的前提下有选择地进行代码路径跟踪,并捕获参数和返回值,可以帮助运维人员快速找到性能热点,以快速改善用户体验。目前传统模式的运营商网络核心交易大多基于原生应用实现,如运行在交易中间件CICS或Tuxedo上的C/C++开发的程序,很难在运行时环境中注入代码,监控颗粒度也往往到接口级无法进一步下钻到原生。
面对原生应用,现有的技术手段是通过基本C++代码仪器剖析框架(BasicInstrumentation and Profiling Framework for C++) 实现,通过开发一系列插装代码(C++预处理宏),选择性地与应用程序编译成在一起。一般使用两个宏完成函数名及出入参捕获,包括一个函数入口宏,和函数出口宏,统称为关卡宏。
在实现本发明实施例的过程中,发明人发现C++代码仪器剖析框架有很大缺陷:如代码改造工作量大,对于操作系统级组件调用,及一些封装后的动态库无法进一步向下发掘代码路径,性能定位颗粒度只能到函数级,仍不能到具体代码级。
发明内容
本发明实施例的一个目的是解决现有技术在进行代码跟踪的需要大量的代码改造工作,而且跟踪的精度较低。
本发明实施例提出了一种代码跟踪方法,包括:
获取预建立插件采集的数据,所述预建立插件依附在目标进程上;
对获取到的数据进行性能热点分析,并根据分析结果确定目标接口;
在生产环境下,对所述目标接口进行切片处理,提取出性能热点对应的程序片段;
在测试环境下,跟踪处于运行状态的所述程序片段获取路径跟踪信息。
可选的,在对所述目标接口进行切片处理之前,所述方法还包括:
根据获取到的数据获取目标注入点;
将传感器注入所述目标注入点,以获取所述传感器采集的交易中间件接口参数值。
可选的,所述对所述目标接口进行切片处理包括:
根据所述交易中间件接口参数值生成测试用例;
根据所述测试用例对生产隔离中间件和测试中间件进行业务探测处理,所述业务探测为从现网业务流、数据流提取程序片段。
可选的,所述根据获取到的数据获取目标注入点包括:
选取调用堆栈中最低端的性能热点;
对选取的性能热点对应的函数进行分析,并根据分析结果判断选取的函数是否具有业务属性;
若是,则判断函数参数是否可正常序列化和反序列化;
若是,则判断函数参数是否小于预设字节长度阈值;
若是,则选取所述函数对应的注入点作为目标注入点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国移动通信集团公司;中国移动通信集团山东有限公司,未经中国移动通信集团公司;中国移动通信集团山东有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611197658.1/2.html,转载请声明来源钻瓜专利网。





