logo好方法网

程序处理方法、装置、电子设备和存储介质


技术摘要:
本公开提供了一种程序处理方法,包括:获取目标应用程序的数据库请求模块的固有标识,其中,固有标识是在编译数据库请求模块时生成的;根据固有标识确定数据库请求模块和目标应用程序的可执行逻辑主模块是否匹配;以及在数据库请求模块和可执行逻辑主模块匹配的情况下  全部
背景技术:
大型主机(Mainframe)使用专用的硬件设备及软件系统,保持其高稳定性和安全 性,在金融领域应用广泛。 如果大型主机中的应用程序在运行过程中出现故障,为了定位故障,需要找到该 故障应用程序对应的源代码版本(也可以简称为源码版本)。 在相关技术中,一般的版本标识方法包括软件包版本标识方法、程序时间戳或者 校验值标识方法和标签注入标识方法。 其中,软件包版本标识方法是指给软件包添加版本标识,通过查找软件包部署记 录,定位运行环境的源码版本。在实现本公开构思的过程中,发明人发现由于软件包版本标 识并非应用程序实体的固有属性,该方法在软件包进行多次拆分、合并、分发后,软件包标 识已经难以和应用程序实体的版本准确匹配。例如,软件包P1包含程序A、B、C,软件包P2包 含程序A、C、D,软件包P3包含程序C、E。软件包P1和P2合并为软件包P4后,软件包P4包含了A、 B、C、D程序,对于软件包P4的程序C,通过软件包P4的软件包版本标识无法直接定位程序C是 来源于P1还是P2还是P3,经过多次测试迭代到Pn后,难以追溯软件包Pn中程序C的版本源; 并且,如果运行环境某个应用程序临时手工替换或者回退,通过软件包标识将不能定位到 正确的源码版本。 程序时间戳或者校验值标识方法是指获取应用程序实体执行模块的时间戳或者 计算其校验值(如MD5值等),记录时间戳或者校验值和源码版本的关系。在实现本公开构思 的过程中,发明人发现由于运行环境的差异,执行模块的校验值会发生变化,并且重新打包 分发以及目标码指令优化等操作会导致执行模块的时间戳发生变化,校验值和时间戳均无 法准确定位标识应用程序版本。 标签注入标识方法是指编译前在源代码注入特定标签,通过在执行模块搜索该特 定标签定位源码版本。在实现本公开构思的过程中,发明人发现如果采用人为注入标签,难 以保证唯一性,如果采用工具自动注入标签,篡改了源代码,存在一定的运行风险。 因此,对于大型主机应用程序的源码版本的追溯,一般的版本标识方法难以满足 要求。
技术实现要素:
有鉴于此,本公开提供了一种程序处理方法、一种程序处理装置、一种电子设备和 一种计算机可读存储介质。 本公开的一个方面提供了一种程序处理方法,包括:获取目标应用程序的数据库 请求模块的固有标识,其中,上述固有标识是在编译上述数据库请求模块时生成的;根据上 4 CN 111597069 A 说 明 书 2/13 页 述固有标识确定上述数据库请求模块和上述目标应用程序的可执行逻辑主模块是否匹配; 以及在上述数据库请求模块和上述可执行逻辑主模块匹配的情况下,根据上述固有标识从 版本信息表中查找上述目标应用程序的源码版本,其中,上述版本信息表中包括上述固有 标识和上述源码版本的对应关系。 根据本公开的实施例,上述目标应用程序包括故障应用程序,上述方法还包括:根 据上述固有标识获取上述故障应用程序的编译列表文件;获取上述故障应用程序的目标码 异常位置;以及根据上述目标码异常位置从上述编译列表文件中确定异常语句对应的源码 行号;以及根据上述异常语句对应的源码行号和上述源码版本,确定异常的源码内容。 根据本公开的实施例,上述根据上述固有标识确定上述数据库请求模块和上述目 标应用程序的可执行逻辑主模块是否匹配包括:将上述固有标识进行序列化,得到第一序 列化值;将上述可执行逻辑主模块进行序列化,得到第二序列化值;以及根据上述第一序列 化值和上述第二序列化值确定上述数据库请求模块和上述可执行逻辑主模块是否匹配。 根据本公开的实施例,上述根据上述第一序列化值和上述第二序列化值确定上述 数据库请求模块和上述可执行逻辑主模块是否匹配包括:将上述第一序列化值拆分为第一 子序列化值和第二子序列化值;将上述第一子序列化值和上述第二子序列化值的位置进行 反转后,得到第三序列化值;以及确定上述第二序列化值中是否包含上述第三序列化值,以 确定上述数据库请求模块和上述可执行逻辑主模块是否匹配;其中,在上述第二序列化值 中包含上述第三序列化值的情况下,确定上述数据库请求模块和上述可执行逻辑主模块匹 配;在上述第二序列化值中不包含上述第三序列化值的情况下,确定上述数据库请求模块 和上述可执行逻辑主模块不匹配。 根据本公开的实施例,上述获取目标应用程序的数据库请求模块的固有标识包 括:读取上述目标应用程序的数据库请求模块;将上述数据库请求模块进行转码,得到转码 文件;以及获取上述转码文件的文件头的固定位置的内容,以作为上述固有标识。 本公开的另一个方面提供了一种程序处理装置,包括:标识获取单元,用于获取目 标应用程序的数据库请求模块的固有标识,其中,上述固有标识是在编译上述数据库请求 模块时生成的;标识匹配单元,用于根据上述固有标识确定上述数据库请求模块和上述目 标应用程序的可执行逻辑主模块是否匹配;以及源码查找单元,用于在上述数据库请求模 块和上述可执行逻辑主模块匹配的情况下,根据上述固有标识从版本信息表中查找上述目 标应用程序的源码版本,其中,上述版本信息表中包括上述固有标识和上述源码版本的对 应关系。 根据本公开的实施例,上述目标应用程序包括故障应用程序,上述装置还包括:编 译列表获取单元,用于根据上述固有标识获取上述故障应用程序的编译列表文件;异常位 置获取单元,用于获取上述故障应用程序的目标码异常位置;以及语句重定位单元,用于根 据上述目标码异常位置从上述编译列表文件中确定异常语句对应的源码行号;以及根据上 述异常语句对应的源码行号和上述源码版本,确定异常的源码内容。 根据本公开的实施例,上述标识匹配单元用于:将上述固有标识进行序列化,得到 第一序列化值;将上述可执行逻辑主模块进行序列化,得到第二序列化值;以及根据上述第 一序列化值和上述第二序列化值确定上述数据库请求模块和上述可执行逻辑主模块是否 匹配。 5 CN 111597069 A 说 明 书 3/13 页 根据本公开的实施例,上述标识获取单元用于:读取上述目标应用程序的数据库 请求模块;将上述数据库请求模块进行转码,得到转码文件;以及获取上述转码文件的文件 头的固定位置的内容,以作为上述固有标识。 本公开的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于 存储一个或多个指令,其中,当上述一个或多个指令被上述一个或多个处理器执行时,使得 上述一个或多个处理器实现如上所述的方法。 本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令, 所述指令在被执行时用于实现如上所述的方法。 本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指 令,所述指令在被执行时用于实现如上所述的方法。 根据本公开的实施例,通过获取目标应用程序的数据库请求模块的固有标识,然 后,根据固有标识确定数据库请求模块和目标应用程序的可执行逻辑主模块是否匹配,在 数据库请求模块和可执行逻辑主模块匹配的情况下,根据固有标识从版本信息表中查找目 标应用程序的源码版本。由于根据固有标识确定了数据库请求模块和可执行逻辑主模块是 否匹配,该固有标识具有不可破坏性和防伪性,使得可以确保目标应用程序的部署是成功 的,在部署成功的情况下,根据数据库请求模块的固有标识从版本信息表中查找目标应用 程序的源码版本,可以较为准确的找到目标应用程序的源码版本,所以至少部分地克服了 由于项目并行迭代版本众多和执行模块匹配关系难识别导致较难对主机应用程序的源码 版本进行的追溯的技术问题,进而达到了较为准确的找到目标应用程序的源码版本的技术 效果。 附图说明 通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和 优点将更为清楚,在附图中: 图1示意性示出了根据本公开实施例的可以应用程序处理方法和装置的示例性系 统架构; 图2示意性示出了根据本公开实施例的程序处理方法的流程图; 图3示意性示出了根据本公开另一实施例的程序处理方法的流程图; 图4示意性示出了根据本公开实施例的在应用程序编译时获取版本信息的流程 图; 图5示意性示出了根据本公开实施例的版本信息表的示意图; 图6示意性示出了根据本公开实施例的根据第一序列化值和第二序列化值确定数 据库请求模块和可执行逻辑主模块是否匹配的流程图; 图7示意性示出了根据本公开实施例的从场景现场溯源追踪源代码的流程图; 图8示意性示出了根据本公开实施例的程序处理装置的框图; 图9示意性示出了根据本公开另一实施例的程序处理装置的框图;以及 图10示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统 的框图。 6 CN 111597069 A 说 明 书 4/13 页
下载此资料需消耗2积分,
分享到:
收藏