[发明专利]程序编译方法及装置、电子设备和存储介质在审
申请号: | 202010623574.X | 申请日: | 2020-06-30 |
公开(公告)号: | CN111767058A | 公开(公告)日: | 2020-10-13 |
发明(设计)人: | 池沐聪;赵伟 | 申请(专利权)人: | 上海商汤智能科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京林达刘知识产权代理事务所(普通合伙) 11277 | 代理人: | 刘新宇 |
地址: | 200233 上海市徐*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 编译 方法 装置 电子设备 存储 介质 | ||
本公开涉及一种程序编译方法及装置、电子设备和存储介质,其中,所述方法包括:获取目标程序的源代码;将所述目标程序的源代码转换为第一表示,并在所述第一表示中添加对目标信息统计函数的调用,得到第二表示;将所述第二表示编译为所述目标程序的可执行文件。本公开实施例可以减少目标程序的开发和维护成本。
技术领域
本公开涉及计算机技术领域,尤其涉及一种程序编译方法及装置、电子设备和存储介质。
背景技术
为了获取程序的运行状态,可以对程序运行过程中的相关信息进行采集,例如,可以对程序中某些函数的调用次数、运行时间等信息进行采集。通过这些相关信息,用户可以对程序进行调试、发现程序运行时的性能瓶颈等。
通常需要程序员人为在程序的源代码中添加日志代码,以实现对程序运行过程中的相关信息进行采集。然而,这种方式不利于程序开发和维护。
发明内容
本公开提出了一种程序编译技术方案。
根据本公开的一方面,提供了一种程序编译方法,包括:
获取目标程序的源代码;将所述目标程序的源代码转换为第一表示,并在所述第一表示中添加对目标信息统计函数的调用,得到第二表示;将所述第二表示编译为所述目标程序的可执行文件。
在一个或多个可选实现方式中,所述目标程序包括目标函数;所述在所述第一表示中添加对目标信息统计函数的调用,得到第二表示,包括:在所述第一表示中与所述目标函数的设定位置对应的第一节点处添加所述目标信息统计函数对应的第二节点,得到第二表示。
在一个或多个可选实现方式中,所述在所述第一表示中添加对目标信息统计函数的调用,得到第二表示之前,还包括:在所述第一表示中查找所述目标函数。
在一个或多个可选实现方式中,所述目标函数的设定位置包括:所述目标函数的开始位置和/或结束位置。
在一个或多个可选实现方式中,所述方法还包括:
创建信息统计函数库,所述信息统计函数库包括多个信息统计函数。
在一个或多个可选实现方式中,所述方法还包括:在运行所述可执行文件的过程中,调用所述目标信息统计函数对所述目标程序进行运行信息统计,得到所述目标程序的运行信息。
在一个或多个可选实现方式中,所述调用所述目标信息统计函数对所述目标程序进行信息统计,包括:基于所述目标程序的环境变量所指示的路径,调用所述目标信息统计函数。
在一个或多个可选实现方式中,所述目标信息统计函数具有多个不同版本,不同版本具有不同路径;所述基于所述目标程序的环境变量所指示的路径,调用所述目标信息统计函数,包括:基于所述目标程序的环境变量所指示的路径,调度所述目标信息统计函数的目标版本。
在一个或多个可选实现方式中,所述方法还包括:在所述可执行文件的运行过程中,异步地存储所述目标程序的运行信息。
在一个或多个可选实现方式中,所述运行信息包括以下至少一项信息:函数签名、进程信息、函数调用开始时刻、函数调用结束时刻、函数执行花费时间、函数执行状态。
根据本公开的一方面,提供了一种信息统计装置,包括:
获取模块,用于获取目标程序的源代码;
转换模块,用于将所述目标程序的源代码转换为第一表示,并在所述第一表示中添加对目标信息统计函数的调用,得到第二表示;
编译模块,用于将所述第二表示编译为所述目标程序的可执行文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海商汤智能科技有限公司,未经上海商汤智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010623574.X/2.html,转载请声明来源钻瓜专利网。