CN104794046B - 符号化程序运行日志的方法和系统 - Google Patents
符号化程序运行日志的方法和系统 Download PDFInfo
- Publication number
- CN104794046B CN104794046B CN201410027679.3A CN201410027679A CN104794046B CN 104794046 B CN104794046 B CN 104794046B CN 201410027679 A CN201410027679 A CN 201410027679A CN 104794046 B CN104794046 B CN 104794046B
- Authority
- CN
- China
- Prior art keywords
- symbol table
- program running
- symbol
- running log
- unique identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
一种符号化程序运行日志的方法,包括以下步骤:获取程序运行日志中需要符号化的进程;获取所述进程的通用唯一识别码;在具有符号表与通用唯一识别码的对应关系的字典中,根据所述进程的通用唯一识别码查找对应的符号表;在所述对应的符号表中提取所述进程对应的函数符号;将程序运行日志中所述进程对应的函数地址替换为所述函数符号。上述方法可快速将程序运行日志中需要符号化的进程对应的函数地址替换为函数符号,即实现程序运行日志的快速符号化,从而提高后续获取发生故障的程序代码、进一步查找到故障根本原因的速度。此外,还提供一种符号化程序日志的系统。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及符号化程序运行日志的方法和系统。
背景技术
程序运行日志用于记录程序代码执行状态信息,程序运行日志的内容包含进程运行时间、进程对应的函数地址、进程运行状态等信息。通过分析运行日志内容中的运行状态,可查找到发生故障的进程对应的函数地址。但要找出故障发生的根本原因则需要分析相应函数的代码,一般可通过函数名查找到函数代码,而程序运行日志中只包含函数地址,因此需要根据函数地址找出对应的函数名。将程序运行日志中进程的函数地址替换为函数名的过程即称为符号化程序运行日志。
现有技术中将程序运行日志进行符号化,需要手工逐个查找需要符号化的进程的函数地址对应的函数名,并将程序运行日志中的函数地址替换为对应的函数名,在符号化过程中需要手工输入一系列相应的命令,因此,现有技术符号化程序运行日志的效率较低。
发明内容
基于此,有必要提供一种可提高符号化效率的符号化程序运行日志的方法。
一种符号化程序运行日志的方法,包括以下步骤:
获取程序运行日志中需要符号化的进程;
获取所述进程的通用唯一识别码;
在具有符号表与通用唯一识别码的对应关系的字典中,根据所述进程的通用唯一识别码查找对应的符号表;
在所述对应的符号表中提取所述进程对应的函数符号;
将程序运行日志中所述进程对应的函数地址替换为所述函数符号。
此外,还有必要提供一种可提高符号化效率的符号化程序运行日志的系统。
一种符号化程序运行日志的系统,包括:
进程获取模块,用于获取程序运行日志中需要符号化的进程;
识别码获取模块,用于获取所述进程的通用唯一识别码;
符号表查找模块,用于在具有符号表与通用唯一识别码的对应关系的字典中,根据所述进程的通用唯一识别码查找对应的符号表;
函数符号提取模块,用于在所述对应的符号表中提取所述进程对应的函数符号;
替换模块,用于将程序运行日志中所述进程对应的函数地址替换为所述函数符号。
上述符号化程序运行日志的方法和系统,可以自动获取程序运行日志中需要符号化的进程,并查找进程的通用唯一识别码对应的符号表,在符号表中提取进程对应的函数符号,进一步将程序运行日志中进程对应的函数地址替换为函数符号,上述方法和系统可快速将程序运行日志中需要符号化的进程对应的函数地址替换为函数符号,即实现程序运行日志的快速符号化,从而提高后续获取发生故障的程序代码、进一步查找到故障根本原因的速度。
附图说明
图1为一个实施例中的符号化程序日志的方法的流程示意图;
图2为一个实施例中在对应的符号表中提取需要符号化的进程对应的函数符号的步骤的流程示意图;
图3为一个实施例中的符号化程序日志的系统的结构示意图;
图4为另一实施例中的符号化程序日志的系统的结构示意图;
图5为一个实施例中函数符号提取模块的结构示意图;
图6为能实现本发明实施例的一个计算机系统的模块图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
如图1所示,在一个实施例中,一种符号化程序运行日志的方法,包括以下步骤:
步骤S10,获取程序运行日志中需要符号化的进程。
在一个实施例中,可获取程序运行日志中堆栈里的进程,程序运行日志中堆栈里的进程即为程序运行日志中需要符号化的进程。
在一个实施例中,在步骤S10之前,上述符号化程序运行日志的方法还包括步骤:搜索程序编译时保存的符号表;获取符号表的通用唯一识别码,并建立具有符号表与通用唯一识别码的对应关系的字典。
在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息,这些信息一般以表格形式存储于系统中,如常数名表、变量名表、数组名表、函数名表等等,这些表格统称为符号表。例如,函数名表中存储函数名和函数地址偏移量等信息。
在一个实施例中,可采用脚本保存程序编译时用到的符号表。在步骤S10之前,可在符号表的存储目录下搜索程序编译时保存的符号表,并可使用dwarfdump命令获取符号表的通用唯一识别码(Universally Unique Identifier,UUID),进一步的,可建立符号表与通用唯一识别码的字典,建立的字典中符号表与符号表的通用唯一识别码之间具有对应关系。
步骤S20,获取需要符号化的进程的通用唯一识别码。
可在程序运行日志中查找得到需要符号化的进程的通用唯一识别码。
步骤S30,在具有符号表与通用唯一识别码的对应关系的字典中,根据需要符号化的进程的通用唯一识别码查找对应的符号表。
步骤S40,在对应的符号表中提取需要符号化的进程对应的函数符号。
如图2所示,在一个实施例中,步骤S40包括以下步骤S402和S404:
步骤S402,获取需要符号化的进程对应的函数地址偏移量。在一个实施例中,步骤S402包括以下步骤:
在程序运行日志中获取需要符号化的进程的进程偏移地址。进程偏移地址可直接在程序运行日志中获取到。
解析对应的符号表的表文件的文件头前缀字段得到符号表的起始地址。可通过otool解析表文件的_PAGEZERO字段得到符号表的起始地址。
计算需要符号化的进程对应的函数地址偏移量为进程偏移地址与符号表的起始地址之和。即,按照如下公式计算函数地址偏移量:函数地址偏移量=进程偏移地址+符号表的起始地址。
步骤S404,在对应的符号表中上述函数地址偏移量对应位置提取函数符号。
步骤S50,将程序运行日志中需要符号化的进程对应的函数地址替换为提取的函数符号。
可在程序运行日志中,使用字符串替换的方法将所述进程对应的函数地址替换成所述提取的函数符号。
上述符号化程序运行日志的方法,可以自动获取程序运行日志中需要符号化的进程,并查找进程的通用唯一识别码对应的符号表,在符号表中提取进程对应的函数符号,进一步将程序运行日志中进程对应的函数地址替换为函数符号,上述方法可快速将程序运行日志中需要符号化的进程对应的函数地址替换为函数符号,即实现程序运行日志的快速符号化,从而提高后续获取发生故障的程序代码、进一步查找到故障根本原因的速度。
以下描述上述符号化程序运行日志的方法的一个应用场景。
在本应用场景的软件环境为Mac OSX或iOS,Mac OSX是一套运行于苹果Macintosh系列电脑上的操作系统,iOS(iphone Operation System)是由苹果公司开发的手持设备操作系统。本应用场景中的程序运行日志为Crash日志。Crash日志是程序停止工作或停止响应而形成的日志。本应用场景中,上述符号化程序运行日志的方法包括以下步骤:
在程序编译时,采用脚本获取并保存程序编译时用到的符号表。
程序编译完成后,可在符号表的存储目录下搜索程序编译时保存的符号表,并可使用dwarfdump命令获取符号表的UUID,进一步的,可建立符号表与UUID的字典,建立的字典中符号表与符号表的UUID之间具有对应关系。
在程序停止工作或响应后,可获取程序的Crash日志。进一步的,可获取Crash日志中堆栈里的进程,Crash日志中堆栈里的进程即为程序运行日志中需要符号化的进程。进一步的,在Crash日志中查找得到需要符号化的进程的UUID。
在具有符号表与UUID的对应关系的字典中,根据需要符号化的进程的UUID查找对应的符号表。
在Crash日志中获取需要符号化的进程的进程偏移地址。通过otool解析对应的符号表的表文件的_PAGEZERO字段得到符号表的起始地址。按照公式计算函数地址偏移量:函数地址偏移量=进程偏移地址+符号表的起始地址。
在对应的符号表中上述函数地址偏移量对应位置提取函数符号。
使用字符串替换的方法将Crash日志中需要符号化的进程对应的函数地址替换为提取的函数符号。
如图3所示,在一个实施例中,一种符号化程序运行日志的系统,包括进程获取模块10、识别码获取模块20、符号表查找模块30、函数符号提取模块40和替换模块50,其中:
进程获取模块10用于获取程序运行日志中需要符号化的进程。
在一个实施例中,进程获取模块10可获取程序运行日志中堆栈里的进程,程序运行日志中堆栈里的进程即为程序运行日志中需要符号化的进程。
在一个实施例中,如图4所示,上述符号化程序运行日志的系统还包括字典建立模块60,用于在获取程序运行日志中需要符号化的进程之前,搜索程序编译时保存的符号表,获取符号表的通用唯一识别码,并建立具有符号表与通用唯一识别码的对应关系的字典。
字典建立模块60可在符号表的存储目录下搜索程序编译时保存的符号表,并可使用dwarfdump命令获取符号表的通用唯一识别码(Universally UniqueIdentifier,UUID),进一步的,可建立符号表与通用唯一识别码的字典,建立的字典中符号表与符号表的通用唯一识别码之间具有对应关系。
在一个实施例中,上述符号化程序运行日志的系统还包括符号表保存模块(图中未示出),用于在搜索程序编译时保存的符号表之前,采用脚本获取并保存程序编译时用到的符号表。
识别码获取模块20用于获取需要符号化的进程的通用唯一识别码。
识别码获取模块20可在程序运行日志中查找得到需要符号化的进程的通用唯一识别码。
符号表查找模块30用于在具有符号表与通用唯一识别码的对应关系的字典中,根据需要符号化的进程的通用唯一识别码查找对应的符号表。
函数符号提取模块40用于在对应的符号表中提取需要符号化的进程对应的函数符号。
如图5所示,在一个实施例中,函数符号提取模块40包括函数地址偏移量获取单元402和符号提取单元404,其中:
函数地址偏移量获取单元402用于获取需要符号化的进程对应的函数地址偏移量。
在一个实施例中,函数地址偏移量获取单元402包括进程偏移地址获取单元、起始地址获取单元和函数地址偏移量计算单元(图中未示出),其中:
进程偏移地址获取单元用于在程序运行日志中获取需要符号化的进程的进程偏移地址。进程偏移地址可直接在程序运行日志中获取到。
起始地址获取单元用于解析对应的符号表的表文件的文件头前缀字段得到符号表的起始地址。起始地址获取单元可通过otool解析表文件的_PAGEZERO字段得到符号表的起始地址。
函数地址偏移量计算单元用于计算需要符号化的进程对应的函数地址偏移量为进程偏移地址与符号表的起始地址之和。即,按照如下公式计算函数地址偏移量:函数地址偏移量=进程偏移地址+符号表的起始地址。
符号提取单元404用于在对应的符号表中上述函数地址偏移量对应位置提取函数符号。
替换模块50用于将程序运行日志中需要符号化的进程对应的函数地址替换为提取的函数符号。
替换模块50可在程序运行日志中,使用字符串替换的方法将所述进程对应的函数地址替换成所述提取的函数符号。
上述符号化程序运行日志的系统,可以自动获取程序运行日志中需要符号化的进程,并查找进程的通用唯一识别码对应的符号表,在符号表中提取进程对应的函数符号,进一步将程序运行日志中进程对应的函数地址替换为函数符号,上述系统可快速将程序运行日志中需要符号化的进程对应的函数地址替换为函数符号,即实现程序运行日志的快速符号化,从而提高后续获取发生故障的程序代码、进一步查找到故障根本原因的速度。
图6为能实现本发明实施例的一个计算机系统1000的模块图。该计算机系统1000只是一个适用于本发明的计算机环境的示例,不能认为是提出了对本发明的使用范围的任何限制。计算机系统1000也不能解释为需要依赖于或具有图示的示例性的计算机系统1000中的一个或多个部件的组合。
图6中示出的计算机系统1000是一个适合用于本发明的计算机系统的例子。具有不同子系统配置的其它架构也可以使用。例如有大众所熟知的台式机、笔记本、平板电脑等类似设备可以适用于本发明的一些实施例。但不限于以上所列举的设备。
如图6所示,计算机系统1000包括处理器1010、存储器1020和系统总线1022。包括存储器1020和处理器1010在内的各种系统组件连接到系统总线1022上。处理器1010是一个用来通过计算机系统中基本的算术和逻辑运算来执行计算机程序指令的硬件。存储器1020是一个用于临时或永久性存储计算程序或数据(例如,程序状态信息)的物理设备。系统总线1020可以为以下几种类型的总线结构中的任意一种,包括存储器总线或存储控制器、外设总线和局部总线。处理器1010和存储器1020可以通过系统总线1022进行数据通信。其中存储器1020包括只读存储器(ROM)或闪存(图中都未示出),以及随机存取存储器(RAM),RAM通常是指加载了操作系统和应用程序的主存储器。
计算机系统1000还包括显示接口1030(例如,图形处理单元)、显示设备1040(例如,液晶显示器)、音频接口1050(例如,声卡)以及音频设备1060(例如,扬声器)。显示设备1040和音频设备1060是用于体验多媒体内容的媒体设备。
计算机系统1000一般包括一个存储设备1070。存储设备1070可以从多种计算机可读介质中选择,计算机可读介质是指可以通过计算机系统1000访问的任何可利用的介质,包括移动的和固定的两种介质。例如,计算机可读介质包括但不限于,闪速存储器(微型SD卡),CD-ROM,数字通用光盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并可由计算机系统1000访问的任何其它介质。
计算机系统1000还包括输入装置1080和输入接口1090(例如,IO控制器)。用户可以通过输入装置1080,如键盘、鼠标、显示装置1040上的触摸面板设备,输入指令和信息到计算机系统1000中。输入装置1080通常是通过输入接口1090连接到系统总线1022上的,但也可以通过其它接口或总线结构相连接,如通用串行总线(USB)。
计算机系统1000可在网络环境中与一个或者多个网络设备进行逻辑连接。网络设备可以是个人电脑、服务器、路由器、智能电话、平板电脑或者其它公共网络节点。计算机系统1000通过局域网(LAN)接口1100或者移动通信单元1110与网络设备相连接。局域网(LAN)是指在有限区域内,例如家庭、学校、计算机实验室、或者使用网络媒体的办公楼,互联组成的计算机网络。WiFi和双绞线布线以太网是最常用的构建局域网的两种技术。WiFi是一种能使计算机系统1000间交换数据或通过无线电波连接到无线网络的技术。移动通信单元1110能在一个广阔的地理区域内移动的同时通过无线电通信线路接听和拨打电话。除了通话以外,移动通信单元1110也支持在提供移动数据服务的2G,3G或4G蜂窝通信系统中进行互联网访问。
应当指出的是,其它包括此计算机系统1000更多或更少的子系统的计算机系统也能适用于发明。
如上面详细描述的,适用于本发明的计算机系统1000能执行符号化程序日志的方法的指定操作。计算机系统1000通过处理器1010运行在计算机可读介质中的软件指令的形式来执行这些操作。这些软件指令可以从存储设备1070或者通过局域网接口1100从另一设备读入到存储器1020中。存储在存储器1020中的软件指令使得处理器1010执行上述的符号化程序日志的方法。此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本发明。因此,实现本发明并不限于任何特定硬件电路和软件的组合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种符号化程序运行日志的方法,包括以下步骤:
获取程序运行日志中需要符号化的进程,所述需要符号化的进程为所述程序运行日志中堆栈里的进程;
获取所述进程的通用唯一识别码;
在具有符号表与通用唯一识别码的对应关系的字典中,根据所述进程的通用唯一识别码查找对应的符号表;
在所述对应的符号表中提取所述进程对应的函数符号,包括:获取所述进程对应的函数地址偏移量,在所述对应的符号表中所述函数地址偏移量对应位置提取函数符号;
将程序运行日志中所述进程对应的函数地址替换为所述函数符号。
2.根据权利要求1所述的符号化程序运行日志的方法,其特征在于,在所述获取程序运行日志中需要符号化的进程的步骤之前,所述方法还包括:
搜索程序编译时保存的符号表;
获取符号表的通用唯一识别码,并建立具有符号表与通用唯一识别码的对应关系的字典。
3.根据权利要求2所述的符号化程序运行日志的方法,其特征在于,在所述搜索程序编译时保存的符号表的步骤之前,所述方法还包括:
采用脚本保存程序编译时用到的符号表。
4.一种符号化程序运行日志的系统,其特征在于,包括:
进程获取模块,用于获取程序运行日志中需要符号化的进程,所述需要符号化的进程为所述程序运行日志中堆栈里的进程;
识别码获取模块,用于获取所述进程的通用唯一识别码;
符号表查找模块,用于在具有符号表与通用唯一识别码的对应关系的字典中,根据所述进程的通用唯一识别码查找对应的符号表;
函数符号提取模块,用于在所述对应的符号表中提取所述进程对应的函数符号,所述函数符号提取模块包括:函数地址偏移量获取单元,用于获取所述进程对应的函数地址偏移量;符号提取单元,用于在所述对应的符号表中所述函数地址偏移量对应位置提取函数符号;
替换模块,用于将程序运行日志中所述进程对应的函数地址替换为所述函数符号。
5.根据权利要求4所述的符号化程序运行日志的系统,其特征在于,所述系统还包括:
字典建立模块,用于在所述获取程序运行日志中需要符号化的进程之前,搜索程序编译时保存的符号表,获取符号表的通用唯一识别码,并建立具有符号表与通用唯一识别码的对应关系的字典。
6.根据权利要求5所述的符号化程序运行日志的系统,其特征在于,所述系统还包括:
符号表保存模块,用于在所述搜索程序编译时保存的符号表之前,采用脚本获取并保存程序编译时用到的符号表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410027679.3A CN104794046B (zh) | 2014-01-21 | 2014-01-21 | 符号化程序运行日志的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410027679.3A CN104794046B (zh) | 2014-01-21 | 2014-01-21 | 符号化程序运行日志的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794046A CN104794046A (zh) | 2015-07-22 |
CN104794046B true CN104794046B (zh) | 2018-12-18 |
Family
ID=53558856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410027679.3A Active CN104794046B (zh) | 2014-01-21 | 2014-01-21 | 符号化程序运行日志的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794046B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547782B (zh) * | 2015-09-22 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 日志信息的获取方法及装置 |
CN105677435A (zh) * | 2015-12-30 | 2016-06-15 | 小米科技有限责任公司 | 函数的调用方法、装置及终端 |
CN109032909A (zh) * | 2018-07-18 | 2018-12-18 | 携程旅游信息技术(上海)有限公司 | 应用程序崩溃日志的处理方法、系统、设备和存储介质 |
CN112114817B (zh) * | 2020-09-28 | 2023-09-19 | 中国银行股份有限公司 | 基于cobol语言的数据字典字段信息获取方法及装置 |
CN114840400A (zh) * | 2022-04-14 | 2022-08-02 | 北京字节跳动网络技术有限公司 | 异常组件的识别方法、装置、设备、存储介质及程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7234080B2 (en) * | 2002-10-18 | 2007-06-19 | Computer Associates Think, Inc. | Locating potential sources of memory leaks |
CN101329638A (zh) * | 2007-06-18 | 2008-12-24 | 国际商业机器公司 | 程序代码的并行性的分析方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087949A1 (en) * | 2000-03-03 | 2002-07-04 | Valery Golender | System and method for software diagnostics using a combination of visual and dynamic tracing |
US8631390B2 (en) * | 2010-04-02 | 2014-01-14 | Apple Inc. | Archiving a build product |
US9262250B2 (en) * | 2011-12-12 | 2016-02-16 | Crashlytics, Inc. | System and method for data collection and analysis of information relating to mobile applications |
-
2014
- 2014-01-21 CN CN201410027679.3A patent/CN104794046B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7234080B2 (en) * | 2002-10-18 | 2007-06-19 | Computer Associates Think, Inc. | Locating potential sources of memory leaks |
CN101329638A (zh) * | 2007-06-18 | 2008-12-24 | 国际商业机器公司 | 程序代码的并行性的分析方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104794046A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10333972B2 (en) | Method and apparatus for detecting hidden content of web page | |
CN104794046B (zh) | 符号化程序运行日志的方法和系统 | |
CN104899220B (zh) | 应用程序推荐方法和系统 | |
CN104703125A (zh) | 基于即时通信的信息推荐方法、装置和终端 | |
US20140214963A1 (en) | Method, server and system for data sharing in social networking service | |
US20190327105A1 (en) | Method and apparatus for pushing information | |
CN105204969A (zh) | 异常日志处理方法以及异常日志处理装置 | |
CN103377053A (zh) | 一种控制应用的方法、装置及系统 | |
CN104268229A (zh) | 一种基于多进程浏览器的资源获得方法及装置 | |
WO2015021873A1 (en) | Method, platform server, and system of data pushing | |
US20140380147A1 (en) | Loading a web page | |
CN104660688A (zh) | 一种获取登录信息的方法与装置 | |
CN103455640A (zh) | 一种文件管理界面的显示方法及装置 | |
CN110704608A (zh) | 文本主题生成方法、装置和计算机设备 | |
CN111381913A (zh) | 前端多语言加载适配方法、装置、计算机设备及存储介质 | |
CN104965692B (zh) | 在桌面应用中跨进程显示数据的方法及系统 | |
CN112800197A (zh) | 一种目标故障信息的确定方法和装置 | |
US8635233B2 (en) | Techniques to automatically build a language dependency graph for localizable resources | |
KR20170067888A (ko) | 카드의 추가방법, 장치, 디바이스 및 컴퓨터 저장매체 | |
GB2521637A (en) | Messaging digest | |
CN108009036B (zh) | 一种定位导致数据异常的操作的方法及服务器 | |
US10503430B2 (en) | Method and device for clearing data and electronic device | |
CN113835737A (zh) | 一种前端项目添加权限的方法及系统 | |
CN104573486A (zh) | 漏洞检测方法和装置 | |
US20180081884A1 (en) | Method and apparatus for processing input sequence, apparatus and non-volatile computer storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |