一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种Linux系统上动态链接库可视化依赖树的生成方法与流程

2023-01-06 03:28:19 来源:中国专利 TAG:

技术特征:
1.一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,包括如下步骤:s1、编写脚本程序,执行脚本程序中的generate_input函数,生成c程序的输入文件result.output,输入文件result.output存储有应用程序的依赖库合集;s2、将输入文件result.output输入二进制执行程序elf_parser进行分析,生成c程序的输出文件library.dot;s3、执行脚本程序中的 handle_output 函数,解析输出文件library.dot,最终画出依赖树结构图。2.根据权利要求1所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,步骤s1中,脚本程序为shell脚本程序。3.根据权利要求1所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,步骤s2中,二进制执行程序elf_parser执行如下分析:s21、解析并检测输入文件result.output合法后,将输入文件result.output中所有依赖库的库名、初始绝对路径 libpath、当前层级level存入consumed队列;s22、循环解析consumed队列:遍历consumed队列中的内容,判断consumed队列是否为空,若consumed队列不为空,执行步骤s23,否则执行步骤s27;s23、当前依赖库的初始绝对路径libpath存在的情况下,加载该依赖库,并判断该依赖库是否为64位的elf文件,若是64位的elf文件,执行步骤s24,否则返回步骤s22;s24、解析elf文件中的dt_needed字段,dt_needed字段用以表示依赖库上声明的依赖项,在初始绝对路径libpath的基础上,找到这个依赖库在系统中的最终绝对路径 newpath,将该依赖库的当前层级level的数值加一,表示依赖库加深了一个层次;并将该依赖库的最终绝对路径newpath与新的当前层级level 一起存入consumed队列;同时记录该依赖库的被引用次数,将被引用次数加一,存入counthash哈希表;s25、调取用于保存依赖库的层次信息的levelhash表,判断是否需要将初始绝对路径 libpath和新的当前层级level插入levelhash表中,若需要,执行步骤s26,否则执行步骤s27;s26、将初始绝对路径 libpath和新的当前层级level存入levelhash表,并保存.dot结构的文件,然后返回步骤s22;s27、遍历counthash哈希表,将库名与被引用次数写到输出文件count.record;s28、结束程序。4.根据权利要求3所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,步骤s23中,当前依赖库的初始绝对路径libpath存在,加载该依赖库,是指:调用 mmap 映射到内存空间以弹出consumed队列;判断该依赖库是否为64位的elf文件,是指:解析 elf文件头结构 e_ident[16]的数据,若e_ident[16]的第五个字节等于2,则该依赖库是64位的elf文件,反之则不是。5.根据权利要求3所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,步骤s24中,二进制执行程序elf_parser还可以解析单个依赖库。6.根据权利要求5所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,对于单个依赖库,通过-l参数来解析单个依赖库。
7.根据权利要求3所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,步骤s25中,判断是否需要将初始绝对路径libpath 和新的当前层级level插入levelhash表,是指:如果levelhash表中不存在该依赖库的层级记录或者该依赖库的层级低于待插入的依赖库的层级level,则将初始绝对路径libpath 和新的当前层级level存入levelhash表中,否则忽略这个待插入的依赖库。8.根据权利要求1所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,步骤s3中,执行脚本程序中的 handle_output 函数,通过去重、替换操作,将依赖库的被引用次数加到 .dot 结构的文件中,最后利用 dot 工具生成树状图结构。9.根据权利要求8所述的一种linux系统上动态链接库可视化依赖树的生成方法,其特征在于,去重为awk去重,替换为sed替换。

技术总结
本发明涉及一种Linux系统上动态链接库可视化依赖树的生成方法,步骤为:S1、执行脚本程序generate_input函数,生成C程序的输入文件result.output;S2、将result.output输入二进制执行程序elf_parser进行分析,生成C程序的输出文件library.dot;S3、执行脚本程序handle_output函数,解析library.dot,最终画出依赖树结构图。本发明通过程序解析elf文件,将依赖层次关系保存到dot格式文件中,并结合脚本的方式,将引用次数加到数据节点中,从而实现了可视化树形结构的生成。实现了可视化树形结构的生成。实现了可视化树形结构的生成。


技术研发人员:李婷 魏炯超 张赛丹 吕沙
受保护的技术使用者:麒麟软件有限公司
技术研发日:2022.12.06
技术公布日:2022/12/30
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献