【技术实现步骤摘要】
一种用于集成开发环境的C程序动态追踪方法及系统
[0001]本专利申请属于程序动态追踪
,更具体地说,是涉及一种用于集成开发环境的C程序动态追踪方法及系统。
技术介绍
[0002]在Linux操作系统下,程序追踪是一种调试、分析应用程序执行状态的手段,在不影响正常程序执行逻辑的前提下获取程序的被追踪点的信息。C应用程序追踪一般包含USDT用户静态追踪、基于uprobe、uretprobe动态追踪或采用eBPF技术的方式。采用USDT方式需要在源代码中加入追踪点,源代码和追踪程序耦合性比较高,每次修改追踪点都需要对源代码改动并重新编译;直接使用Linux内核中的uprobe、uretprobe追踪应用程序需要编写对应的内核模块,复杂性高并且可移植性比较差。
[0003]eBPF是Linux操作系统下的一个通用执行引擎,全称“扩展的伯克利数据包过滤器 (Extended Berkeley Packet Filter)”,它是一种数据包过滤技术,是安全、网络、负载均衡、故障分析、追踪等领域的主战场,可基于此引擎开发性 ...
【技术保护点】
【技术特征摘要】
1.一种C程序动态追踪系统,位于C程序源代码中,其特征在于:包括选择函数模块、追踪程序代码生成模块、开始追踪模块、结束追踪模块,选择函数模块,选择被追踪函数;追踪程序代码生成模块,根据选择的被追踪函数,生成追踪程序代码;开始追踪模块,根据追踪程序代码,执行追踪程序;结束追踪模块,根据追踪程序代码,结束追踪程序。2.一种用于集成开发环境的C程序动态追踪方法,利用了权利要求1所述的一种C程序动态追踪系统,其特征在于:包括以下步骤,步骤S1:通过选择函数模块,选择C程序源代码中所有被追踪函数;步骤S2:根据选择的上述所有被追踪函数,通过追踪程序代码生成模块,生成基于eBPF/BCC编译链的追踪代码,进而生成追踪程序;步骤S3:通过开始追踪模块,执行追踪程序,实时输出被追踪函数的调用信息;步骤S4:通过结束追踪模块,结束追踪程序,输出所有被追踪函数的汇总信息。3.根据权利要求2所述的一种用于集成开发环境的C程序动态追踪方法,其特征在于:步骤S1具体包括,步骤S11:开发者在集成开发环境中打开C程序源代码,激活C程序动态追踪系统;步骤S12:打开选择被追踪函数的对话框,选择需要的被追踪函数;步骤S13:保存步骤S12中选中的被追踪函数的函数名、返回值类型、参数类型及参数顺序。4.根据权利要求2所述的一种用于集成开发环境的C程序动态追踪方法,其特征在于:步骤S2具体包括,步骤S21:开发者在当前打开的C程序项目中生成追踪程序;步骤S22:C程序动态追踪系统解析所有被保存的被追踪函数的函数信息,自动生成基于eBPF/BCC编译链的C代码和Python代码并保存。5.根据权利要求4所述的一种用于集成开发环境的C程序动态追踪方法,其特征在于:步骤S22中,生成的C代码实现被追踪函数的uprobe Hook 函数、uretprobe Hook 函数,上述uprobe Hook 函数、uretprobe Hook 函数...
【专利技术属性】
技术研发人员:马春雨,刘步权,穆瑞超,吴春光,齐璇,战茅,徐虹,丁丽丽,王鹏龙,
申请(专利权)人:麒麟软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。