CN110188044B - 软件错误的处理方法、装置、存储介质以及设备 - Google Patents

软件错误的处理方法、装置、存储介质以及设备 Download PDF

Info

Publication number
CN110188044B
CN110188044B CN201910464662.7A CN201910464662A CN110188044B CN 110188044 B CN110188044 B CN 110188044B CN 201910464662 A CN201910464662 A CN 201910464662A CN 110188044 B CN110188044 B CN 110188044B
Authority
CN
China
Prior art keywords
error
software
source code
information
submission
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
Application number
CN201910464662.7A
Other languages
English (en)
Other versions
CN110188044A (zh
Inventor
何骏成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910464662.7A priority Critical patent/CN110188044B/zh
Publication of CN110188044A publication Critical patent/CN110188044A/zh
Application granted granted Critical
Publication of CN110188044B publication Critical patent/CN110188044B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种软件错误的处理方法、装置、存储介质以及设备,属于软件技术领域。所述方法包括:获取错误提示信息,所述错误提示信息用于指示目标源码中存在软件错误;获取关于所述软件错误的错误日志;解析所述错误日志,得到所述目标源码的文件名以及存在所述软件错误的行号;基于所述文件名和所述行号,在版本控制系统中查找所述目标源码的提交作者信息;基于所述提交作者信息,将与所述软件错误关联的信息发送至第二设备。本申请实现了自动化检测软件错误并将检测到的软件错误通知给提交作者,不但节省了人工排查错误的人力成本,较为高效,而且加快了错误修复速度。

Description

软件错误的处理方法、装置、存储介质以及设备
技术领域
本申请涉及软件技术领域,特别涉及一种软件错误的处理方法、装置、存储介质以及设备。
背景技术
随着软件技术的快速发展,通过不定时地发布新款软件产品来吸引用户,成为了时下众多互联网公司的首选。在软件产品的发布流程中,往往需要对软件产品的源码进行编译,在编译过程中可能会出现编译错误;又或者,在软件产品的发布流程中还可能会出现其他类似的错误;而无论哪种类型的错误,这些错误的出现均会导致软件产品发布失败。
以编译错误为例,相关技术为了排查错误原因,通常的做法是:首先,通过人工查看编译日志来确定编译错误;之后,基于人工查找到的编译错误,在版本控制系统中查找相关作者,进而通知相关作者进行修改。
针对上述处理方式,人工进行错误排查较为耗时且低效。基于此,如何对软件错误进行处理,成为了本领域技术人员亟待解决的一个问题。
发明内容
本申请实施例提供了一种软件错误的处理方法、装置、存储介质以及设备,解决了相关技术存在的人工进行错误排查较为耗时且低效的问题。所述技术方案如下:
一方面,提供了一种软件错误的处理方法,所述方法应用于第一设备,所述方法包括:
获取错误提示信息,所述错误提示信息用于指示目标源码中存在软件错误;
获取关于所述软件错误的错误日志;
解析所述错误日志,得到所述目标源码的文件名以及存在所述软件错误的行号;
基于所述文件名和所述行号,在版本控制系统中查找所述目标源码的提交作者信息;
基于所述提交作者信息,将与所述软件错误关联的信息发送至第二设备。
另一方面,提供了一种软件错误的处理装置,所述装置应用于第一设备,所述装置包括:
第一获取模块,用于获取错误提示信息,所述错误提示信息用于指示目标源码中存在软件错误;
第二获取模块,用于获取关于所述软件错误的错误日志;
解析模块,用于解析所述错误日志,得到所述目标源码的文件名以及存在所述软件错误的行号;
查找模块,用于基于所述文件名和所述行号,在版本控制系统中查找所述目标源码的提交作者信息;
发送模块,用于基于所述提交作者信息,将与所述软件错误关联的信息发送至第二设备。
在一种可能的实现方式中,所述发送模块,还用于基于所述提交作者信息,将所述错误日志以及与所述行号匹配的所述提交信息,发送至所述第二设备。
在一种可能的实现方式中,所述查找模块,还用于向所述版本控制系统发送查询指令,所述查询指令中包括所述文件名和设置的文件格式参数;接收所述版本控制系统返回的与所述文件格式参数匹配的输出文件,所述输出文件中包括所述目标源码的提交信息。
在一种可能的实现方式中,所述软件错误的类型至少包括:编译错误、所述目标源码运行时的崩溃堆栈错误。
在一种可能的实现方式中,所述装置还包括:
编译模块,用于编译所述目标源码;
所述第一获取模块,还用于在编译过程中,获取编译器输出的所述错误提示信息。
另一方面,提供了一种软件错误的处理设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述的软件错误的处理方法。
另一方面,提供了一种存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的软件错误的处理方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例在获取到用于指示源码中存在软件错误的错误提示信息后,会进一步地获取关于该软件错误的错误日志,并通过解析该错误日志,获取源码的文件名以及存在软件错误的行号;之后,基于获取到的文件名和行号,在版本控制系统中查找源码的提交作者信息,并基于该提交作者信息,将与该软件错误关联的信息发送至第二设备,基于以上描述可知,本申请实施例实现了自动化检测软件错误并将检测到的软件错误通知给提交作者,不但节省了人工排查错误的人力成本,较为高效,而且加快了错误修复速度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种软件错误的处理方法涉及的实施环境的示意图;
图2是本申请实施例提供的一种软件错误的处理方法的流程图;
图3是本申请实施例提供的一种软件错误的处理方法的整体执行流程图;
图4是本申请实施例提供的一种存在编译错误的代码的示意图;
图5是本申请实施例提供的一种错误提示信息的示意图;
图6是本申请实施例提供的一种错误日志的示意图;
图7是本申请实施例提供的一种解析错误日志的python程序的示意图;
图8是本申请实施例提供的一种提交信息的示意图;
图9是本申请实施例提供的一种软件错误的处理装置的结构示意图;
图10是本申请实施例提供的一种设备1000的结构示意图;
图11是本申请实施例提供的一种设备1100的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对涉及到的一些缩略语和关键术语进行解释说明。
PUBGM:是PUBG Mobile的缩写,PUBG的英文全称为PLAYER UNKNOWN’S BATTLEGROUNDS,中文名称为绝地求生。
其中,PUBG是一款战术竞技射击类游戏,在游戏中,玩家需要在游戏地图上收集各种资源,并在不断缩小的安全区域内对抗其他玩家,让自己生存到最后。PUBG可运行在Windows系统上。而PUBGM是新开发的一款国际化手机游戏(简称手游),其可以运行在Android和iOS系统上。
版本控制:是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更进行管理。
换一种表达方式,版本控制最主要的功能即是追踪文件的变更。它能够将何时、哪个作者更改了文件的何种内容等信息完整地记录下来。
版本控制系统:是一种记录一个或者若干文件内容变化,以便将来查阅特定版本修订情况的系统。
其中,常见的版本控制系统有SVN(Subversion)、Git等。
编译报错:也称之为编译错误。
编译器是一种计算机程序,它负责将一种编程语言转换为另外一种编程语言。其中,编译器通常是将高级编程语言(比如C语言或C++)转换为低级编程语言(比如,汇编语言或机器语言)。
而编译报错是指在编译过程中,由于源码存在问题导致编译无法通过而产生的错误。作为一个示例,常见的编译报错包括但不限于语法错误、链接错误以及语义错误等。
UE4:指代虚幻引擎,是一款游戏引擎,最新版本为虚幻引擎4。
iOS:是苹果公司为其移动设备所开发的一个专有移动操作系统,ios可为包括iPhone、iPad和iPod touch等在内的多种移动设备提供操作界面。
Android系统:中文名称为安卓系统,是一个基于Linux内核的开放源码移动操作系统。
下面对本申请实施例提供的一种软件错误的处理方法涉及的实施环境进行介绍说明。
参见图1,该实施环境包括:第一设备101和第二设备102。其中,第一设备101和第二设备102均为具有计算能力的计算机设备。
作为一个示例,第一设备101的设备类型包括但不限于台式电脑或笔记本电脑等,第二设备102的设备类型包括但不限于智能手机、平板电脑、台式电脑或笔记本电脑等,本申请实施例对此不进行具体限定。
在本申请实施例中,提供了一种基于版本控制系统的自动化报错推送系统,通过周期性地运行该系统,可以将软件错误快速反馈给相关开发人员,进而保证在软件发布前避免软件错误,从而提升软件开发和发布效率,节省人力成本。
需要说明的第一点是,本申请实施例涉及的软件错误除了编译报错之外,其他任何类型可以解析的错误均可以使用该系统进行自动化报错推送。
基于以上描述可知,在本申请实施例中,第一计算机设备101用于基于编译报错或者其他类似的可解析报错,解析出产生错误的源码的文件名和发生错误的行号,然后通过版本控制系统的追溯功能查找相应的提交信息,确定产生错误的源码的提交作者,进而将收集到的错误信息推送给提交作者,以通知其进行修改。
针对上述软件错误的处理方法,由于自动化了整个报错推送流程,并周期性地执行该流程,因此可在软件发布前的代码开发完成阶段实现快速检测软件错误,加快了错误修复速度,降低了Bug修复成本。另外,由于可以将报错类型从编译报错扩展到其他类型的报错,因此节省了人力成本,加快了项目发布流程。
需要说明的第二点是,本申请实施例提供的上述软件错误的处理方法的应用场景包括但不限于:PUBGM是基于UE4开发的一款手机游戏,发布时需要将源码和资源打包成特定的平台格式。作为一个示例,针对iOS类型的操作系统,该格式为ipa(iphoneapplication,苹果应用程序)文件格式,针对Android类型的操作系统,该格式为apk(android package,安卓安装包)文件格式。在发布过程中需要编译源码,源码的编译错误会导致发布失败。本申请实施例通过自动化编译和检测编译错误,并将报错信息推送给相关开发人员,能够100%避免在发布过程中出现编译错误,加快了项目发布流程。
下面对本申请实施例提供的一种软件错误的处理方法进行详细地解释说明。需要说明的是,后文中出现的类似第一、第二、第三、第四等类似描述,仅是为了区分不同的对象,而不构成任何其他的限定。
图2是本申请实施例提供的一种软件错误的处理方法的流程图。该方法的交互主体为图1中示出的第一设备和第二设备。参见图2,本申请实施例提供的方法流程包括:
201、第一设备获取错误提示信息,该错误提示信息用于指示目标源码中存在软件错误。
其中,目标源码在本文中指代泛指存在软件错误的源码。
在本申请实施例中,软件错误除了包括编译错误之外,还可包括其他任何类型可以解析的错误,比如虚幻4的蓝图编译报错、源码运行时的崩溃堆栈错误等。其中,编译错误包括但不限于语法错误、链接错误、语义错误等。
当源码中存在软件错误时,在诸如源码编译过程或源码运行过程等场景下,通常均会给出错误提示信息,以提示源码中存在软件错误。
在一种可能的实现方式中,参见图3,以编译错误为例,在对源码进行编译的过程中,当运行编译器对如图4所示的一段存在编译错误的代码进行编译时,编译器会运行失败并输出如图5所示的错误提示信息。
作为一个示例,错误提示信息中可包括源码的文件名、存在编译错误的具体位置以及错误原因等,本申请实施例对此不进行具体限定。以错误提示信息为test.c:4:26:error:expected:‘;’after expression为例,则该错误提示信息的含义是源码test.c的第4行第26个字符存在错误,错误的原因是缺少分号。
202、第一设备获取关于该软件错误的错误日志。
在一种可能的实现方式中,当该软件错误的类型为编译错误时,该错误日志便指代编译日志。以编译日志为例,假设以clang编译器对存在编译错误的源码进行编译,则为了获取错误日志,首先还需通过输出重定向,将clang编译器的标准输出和标准错误输出保存到日志文件中。作为一个示例,在Windows平台下可以通过如下方式实现:
clang test.c>test.log 2>&1
此时可以得到test.log日志文件,该日志文件即为关于该编译错误的错误日志。其中,test.log日志文件包括的内容可如图6所示。
203、第一设备解析错误日志,得到目标源码的文件名以及存在软件错误的行号。
在一种可能的实现方式中,第一设备在解析错误日志时,可采取如下方式实现:在获取到错误日志后,通过编写程序对该错误日志进行逐行分析,利用正则表达式,匹配并提取出发生软件错误的源码的文件名、以及发生软件错误的具体行号。
作为一个示例,以编译日志为例,则如图7示出了一个可以解析编译日志并提取出错误的文件名和错误的行号的python程序。
204、第一设备基于目标源码的文件名以及存在软件错误的行号,在版本控制系统中查找目标源码的提交作者信息。
其中,版本控制系统包括但不限于:SVN、Git或者Perforce等具有记录提交信息功能的系统。
在本申请实施例中,基于目标源码的文件名以及存在软件错误的行号,在版本控制系统中查找目标源码的提交作者信息,包括如下两个步骤:
2041、基于目标源码的文件名在版本控制系统中查找目标源码的提交信息。
在一种可能的实现方式中,获取目标源码的提交信息,包括但不限于:
向版本控制系统发送查询指令,其中,该查询指令中包括目标源码的文件名和设置的文件格式参数;接收版本控制系统返回的与该文件格式参数匹配的输出文件,其中,该输出文件中包括目标源码的提交信息。
其中,设置的文件格式参数可为XML(eXtensible Markup Language,可扩展标记语言),即输出文件为XML格式,也即输出XML文件,本公开实施例对此不进行具体限定。
作为一个示例,以编译错误为例,假设版本控制系统为SVN,则可通过如下SVN指令从版本控制系统中获取目标源码的提交信息:
svn blame--xml"file:///C:/Users/lvyhe/Desktop/svn_repos/trunk/test.c">blame.xml
其中,参数选项blame的含义是获取目标源码每行的历史提交记录,包含提交作者的名称。参数选项--xml的含义是将目标源码的提交信息以xml的文件格式进行输出,以方便后续解析。
2042、基于存在软件错误的行号,在目标源码的提交信息中查找目标源码的提交作者信息。
目标源码的提交信息可如图8所示,该提交信息以XML文件格式输出。在图8中,line-number=“4”表示发生编译错误的具体行号,author表示提交作者,该参数的参数值即对应具体的提交作者名称。
在一种可能的实现方式中,基于获取到的行号,可以通过一个XML文件解析程序来获取提交作者信息,即提交作者名称,从而获知发生软件错误的源码的提交作者。
205、第一设备基于获取到的提交作者信息,将与该软件错误关联的信息发送至第二设备。
在本申请实施例中,与该软件错误关联的信息包括但不限于:如图6所示的错误日志,以及如图8所示的与发生软件错误的行号匹配的提交信息。
相应地,基于获取到的提交作者信息,将与该软件错误关联的信息发送至第二设备,包括但不限于:基于获取到的提交作者信息,将获取到的错误日志以及与发生软件错误的行号匹配的提交信息,发送至第二设备。
在一种可能的实现方式中,第一设备可自动以邮件方式将收集到的信息发送至第二设备,即发送给提交作者;或者,第一设备还可自动通过即时网络通信应用,将收集到的信息发送至第二设备,本申请实施例对此不进行具体限定。
本申请实施例提供的方法至少具有以下有益效果:
在软件开发完成后立即周期性地执行自动报错推送,因此可以在软件发布前将软件错误快速反馈给相关开发人员,即,本申请实施例实现了在代码开发完成阶段快速检测软件错误,加快了错误修复速度,大大降低了Bug修复成本。
另外,本申请实施例还能够将软件错误类型从编译错误扩展到其他类型的可解析错误,功能丰富,能够节省因人工排查错误而产生的人力成本,加快了项目发布流程。
另外,本申请实施例实现了自动化检测软件错误并将检测到的软件错误通知给提交作者,不但节省了人工排查错误的人力成本,较为高效,而且加快了错误修复速度。
另外,本申请实施例通过自动化进行报错推送能够100%避免在发布过程中出现软件错误,提升了软件开发和发布效率。
在另一个实施例中,以编译错误为例,参见图3,本申请实施例提供的一种软件错误的处理方法的整体执行流程包括:
301、编译源码。
302、当在对源码的编译过程中产生编译错误时,执行下述步骤303;当未产生编译错误时,处理流程至此结束。
303、解析编译日志,获取到发生编译错误的源码的文件名和行号。
304、基于该文件名在版本控制系统中查找,获取发生编译错误的源码的提交信息。
305、通过该行号匹配错误行的提交作者。
其中,提交作者在本文中也称之为提交的软件开发人员。
306、收集错误信息,发送给提交作者。
在另一个实施例中,以编译错误为例,对本申请实施例提供的软件错误的处理方法进行详细地举例说明。
作为一个示例,以一段存在编译错误的源码为例,假设该项目采用clang编译器进行编译,且使用SVN类型的版本控制系统管理项目源码。
编译报错
图4示出了存在编译错误的源码。该段代码是“Hello World!”C语言程序,其中,该段代码的第4行存在语法错误,行尾缺少分号“;”,这个语法错误会导致该段代码无法编译通过。当运行clang编译器对该段代码进行编译时,clang编译器会运行失败,并输出如图5所示的编译报错。
参见图5,编译报错(也可称之为错误提示信息)是以一种格式化信息输出的,test.c:4:26:error:expected:‘;’after expression
其中,上述格式化信息的含义是源码test.c的第4行第26个字符存在错误,错误的原因是缺少分号。
需要说明的是,所有类型的编译错误均会导致clang编译器运行失败,失败时的退出码通常用非0表示。因此,通过获取clang编译器运行时的退出码,即可判断clang编译器是否运行成功。
获取编译日志
为了获取编译日志,可以通过输出重定向,将clang编译器的标准输出和标准错误输出保存到日志文件中。
在一种可能的实现方式中,在Windows平台下可以通过如下方式实现:
clang test.c>test.log 2>&1
此时即可以得到如图6所示的test.log日志文件,即编译日志。
解析编译日志
在获取到编译日志后,通过编写程序对该编译日志进行逐行分析,利用正则表达式来匹配并提取出错误的文件名和错误的行号。
作为一个示例,如图7示出了一个可以解析该编译日志,并提取出错误的文件名和错误的行号的python程序。
通过版本控制系统追溯提交信息
在一种可能的实现方式中,可通过如下SVN指令获取源码的历史提交信息:
svn blame--xml"file:///C:/Users/lvyhe/Desktop/svn_repos/trunk/test.c">blame.xml
其中,参数选项blame的含义是获取源码文件每行的历史记录,包含提交作者的名称。参数选项--xml的含义是将该提交信息以xml的文件格式进行输出,以方便后续解析。
作为一个示例,参见图8,提交信息以xml文件格式输出。其中,line-number=“4”表示错误的行号,author表示提交作者。
在一种可能的实现方式中,编写一个xml文件解析程序即可获取到提交作者的名称,从而获知发生编译错误的源码的提交作者。
推送给相关作者
最后一步,将整合后的信息发送给提交作者。在一种可能的实现方式中,可以通过邮件或者其他即时网络通信应用,将整合后的信息发送给提交作者,本申请实施例对此不进行具体限定。
图9是本申请实施例提供的一种软件错误的处理装置的结构示意图,该装置应用于第一设备,参见图9,该装置包括:
第一获取模块901,用于获取错误提示信息,所述错误提示信息用于指示目标源码中存在软件错误;
第二获取模块902,用于获取关于所述软件错误的错误日志;
解析模块903,用于解析所述错误日志,得到所述目标源码的文件名以及存在所述软件错误的行号;
查找模块904,用于基于所述文件名和所述行号,在版本控制系统中查找所述目标源码的提交作者信息;
发送模块905,用于基于所述提交作者信息,将与所述软件错误关联的信息发送至第二设备。
本申请实施例提供的装置,在获取到用于指示源码中存在软件错误的错误提示信息后,会进一步地获取关于该软件错误的错误日志,并通过解析该错误日志,获取源码的文件名以及存在软件错误的行号;之后,基于获取到的文件名和行号,在版本控制系统中查找源码的提交作者信息,并基于该提交作者信息,将与该软件错误关联的信息发送至第二设备,基于以上描述可知,本申请实施例实现了自动化检测软件错误并将检测到的软件错误通知给提交作者,不但节省了人工排查错误的人力成本,较为高效,而且加快了错误修复速度。
在一种可能的实现方式中,查找模块904,还用于基于所述文件名,在所述版本控制系统中查找所述目标源码的提交信息;基于所述行号,在所述目标源码的提交信息中查找所述目标源码的提交作者信息。
在一种可能的实现方式中,发送模块905,还用于基于所述提交作者信息,将所述错误日志以及与所述行号匹配的所述提交信息,发送至所述第二设备。
在一种可能的实现方式中,查找模块904,还用于向所述版本控制系统发送查询指令,所述查询指令中包括所述文件名和设置的文件格式参数;接收所述版本控制系统返回的与所述文件格式参数匹配的输出文件,所述输出文件中包括所述目标源码的提交信息。
在一种可能的实现方式中,所述软件错误的类型至少包括:编译错误、所述目标源码运行时的崩溃堆栈错误。
在一种可能的实现方式中,该装置还包括:
编译模块,用于编译所述目标源码;
所述第一获取模块,还用于在编译过程中,获取编译器输出的所述错误提示信息。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的软件错误的处理装置在处理软件错误时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的软件错误的处理装置与软件错误的处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10示出了本申请一个示例性实施例提供的设备1000的结构示意图。该设备1000可以是前述的第二设备。
通常,设备1000包括有:处理器1001和存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的软件错误的处理方法。
在一些实施例中,设备1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、触摸显示屏1005、摄像头1006、音频电路1007和电源1009中的至少一种。
外围设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置设备1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在设备1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005可以是柔性显示屏,设置在设备1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在设备1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
电源1009用于为设备1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,设备1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、光学传感器1015以及接近传感器1016。
加速度传感器1011可以检测以设备1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制触摸显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1012可以检测设备1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对设备1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1013可以设置在设备1000的侧边框和/或触摸显示屏1005的下层。当压力传感器1013设置在设备1000的侧边框时,可以检测用户对设备1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在触摸显示屏1005的下层时,由处理器1001根据用户对触摸显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制触摸显示屏1005的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1005的显示亮度;当环境光强度较低时,调低触摸显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,通常设置在设备1000的前面板。接近传感器1016用于采集用户与设备1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与设备1000的正面之间的距离逐渐变小时,由处理器1001控制触摸显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与设备1000的正面之间的距离逐渐变大时,由处理器1001控制触摸显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图10中示出的结构并不构成对设备1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图11是本申请实施例提供的一种设备1110的结构示意图,该设备1100可以是前述的第一设备。
该设备1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)1101和一个或一个以上的存储器1102,其中,所述存储器1102中存储有至少一条指令,所述至少一条指令由所述处理器1101加载并执行以实现上述各个方法实施例提供的软件错误的处理方法。当然,该设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该设备还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中的软件错误的处理方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (7)

1.一种软件错误的处理方法,其特征在于,所述方法应用于第一设备,所述方法包括:
获取错误提示信息,所述错误提示信息用于指示目标源码中存在软件错误;
获取关于所述软件错误的错误日志;
对所述错误日志进行逐行分析,利用正则表达式匹配并提取出所述目标源码的文件名以及存在所述软件错误的行号;
向版本控制系统发送查询指令,所述查询指令中包括所述文件名和设置的文件格式参数;
接收所述版本控制系统返回的与所述文件格式参数匹配的输出文件,所述输出文件中包括所述目标源码的提交信息;
基于所述行号,通过XML文件解析程序在所述目标源码的提交信息中查找所述目标源码的提交作者信息;
基于所述提交作者信息,将与所述软件错误关联的信息发送至第二设备。
2.根据权利要求1所述的方法,其特征在于,所述基于所述提交作者信息,将与所述软件错误关联的信息发送至第二设备,包括:
基于所述提交作者信息,将所述错误日志以及与所述行号匹配的所述提交信息,发送至所述第二设备。
3.根据权利要求1至2中任一项权利要求所述的方法,其特征在于,所述软件错误的类型至少包括:编译错误、所述目标源码运行时的崩溃堆栈错误。
4.根据权利要求3所述的方法,其特征在于,当所述软件错误的类型为所述编译错误时,所述方法还包括:
编译所述目标源码;
所述获取错误提示信息,包括:
在编译过程中,获取编译器输出的所述错误提示信息。
5.一种软件错误的处理装置,其特征在于,所述装置应用于第一设备,所述装置包括:
第一获取模块,用于获取错误提示信息,所述错误提示信息用于指示目标源码中存在软件错误;
第二获取模块,用于获取关于所述软件错误的错误日志;
解析模块,用于对所述错误日志进行逐行分析,利用正则表达式匹配并提取出所述目标源码的文件名以及存在所述软件错误的行号;
查找模块,用于向版本控制系统发送查询指令,所述查询指令中包括所述文件名和设置的文件格式参数;接收所述版本控制系统返回的与所述文件格式参数匹配的输出文件,所述输出文件中包括所述目标源码的提交信息;基于所述行号,通过XML文件解析程序在所述目标源码的提交信息中查找所述目标源码的提交作者信息;
发送模块,用于基于所述提交作者信息,将与所述软件错误关联的信息发送至第二设备。
6.一种软件错误的处理设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至4中任一项权利要求所述的软件错误的处理方法。
7.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至4中任一项权利要求所述的软件错误的处理方法。
CN201910464662.7A 2019-05-30 2019-05-30 软件错误的处理方法、装置、存储介质以及设备 Active CN110188044B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910464662.7A CN110188044B (zh) 2019-05-30 2019-05-30 软件错误的处理方法、装置、存储介质以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910464662.7A CN110188044B (zh) 2019-05-30 2019-05-30 软件错误的处理方法、装置、存储介质以及设备

Publications (2)

Publication Number Publication Date
CN110188044A CN110188044A (zh) 2019-08-30
CN110188044B true CN110188044B (zh) 2022-06-28

Family

ID=67719146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910464662.7A Active CN110188044B (zh) 2019-05-30 2019-05-30 软件错误的处理方法、装置、存储介质以及设备

Country Status (1)

Country Link
CN (1) CN110188044B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506515B (zh) * 2019-09-16 2024-05-10 努比亚技术有限公司 一种编译控制方法、终端及计算机可读存储介质
US11182939B2 (en) 2019-10-07 2021-11-23 Rohde & Schwarz Gmbh & Co. Kg Method and system for transforming message logs into images
CN112988214B (zh) * 2019-12-12 2023-02-17 杭州中天微系统有限公司 集成开发环境终端、平台服务器和介质
CN111240873A (zh) * 2019-12-31 2020-06-05 广东趣炫网络股份有限公司 一种代码错误记录管理方法和装置
CN112819419B (zh) * 2020-08-13 2023-03-21 厦门汉印电子技术有限公司 一种基于Git的Android应用国际化语言管理方法和系统
CN112486803A (zh) * 2020-11-12 2021-03-12 珠海格力电器股份有限公司 一种错误处理方法、装置及设备
CN112783533A (zh) * 2021-02-03 2021-05-11 北京达佳互联信息技术有限公司 版本信息更新方法、装置、终端及存储介质
CN112860650A (zh) * 2021-02-08 2021-05-28 广州仪速安电子科技有限公司 一种仪器故障告警方法和装置
CN113032245A (zh) * 2021-02-26 2021-06-25 深圳壹账通创配科技有限公司 错误定位识别的测试方法、装置、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612826B2 (en) * 2014-07-31 2017-04-04 Facebook, Inc. Attributing authorship to segments of source code
CN104461671A (zh) * 2014-12-05 2015-03-25 闻泰通讯股份有限公司 代码修改汇报的定时管理方法及系统
CN106354638A (zh) * 2016-08-29 2017-01-25 广州唯品会信息科技有限公司 基于词法分析的自动测试方法及装置
CN108920364A (zh) * 2018-06-21 2018-11-30 深圳壹账通智能科技有限公司 软件缺陷定位方法、装置、终端及计算机可读存储介质

Also Published As

Publication number Publication date
CN110188044A (zh) 2019-08-30

Similar Documents

Publication Publication Date Title
CN110188044B (zh) 软件错误的处理方法、装置、存储介质以及设备
CN112052008B (zh) 代码检查方法、装置、计算机设备及计算机可读存储介质
CN109828802B (zh) 列表视图显示方法、装置及可读介质
CN110210219B (zh) 病毒文件的识别方法、装置、设备及存储介质
CN108536594B (zh) 页面测试方法、装置及存储设备
CN109491924B (zh) 代码检测方法、装置、终端及存储介质
CN110196795B (zh) 检测移动终端应用运行状态的方法及相关装置
CN111723002A (zh) 一种代码调试方法、装置、电子设备及存储介质
CN112116690B (zh) 视频特效生成方法、装置及终端
CN110058850A (zh) 一种应用的开发方法、装置以及存储介质
CN111125602B (zh) 页面构建方法、装置、设备和存储介质
CN111737100A (zh) 数据获取方法、装置、设备及存储介质
CN111338933A (zh) 埋点验证方法、装置、设备及存储介质
US20220292141A1 (en) Quick Application Startup Method and Related Apparatus
CN111459466A (zh) 代码生成方法、装置、设备及存储介质
CN109634872B (zh) 应用测试方法、装置、终端及存储介质
CN112965911B (zh) 界面异常检测方法、装置、计算机设备及存储介质
CN113268234A (zh) 页面生成方法、装置、终端和存储介质
CN112783533A (zh) 版本信息更新方法、装置、终端及存储介质
CN112416356A (zh) Json字符串的处理方法、装置、设备及存储介质
CN113971123A (zh) 应用程序测试方法、装置、测试终端和存储介质
CN112860261A (zh) 静态代码检查方法、装置、计算机设备及可读存储介质
CN112783512B (zh) 应用程序包处理方法、装置、设备及存储介质
CN113342645B (zh) 测试业务功能的方法、装置、设备及存储介质
CN111563035B (zh) 测试结果展示方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant