CN113176989A - 日志文件的解析方法、装置、设备及存储介质 - Google Patents
日志文件的解析方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113176989A CN113176989A CN202110586891.3A CN202110586891A CN113176989A CN 113176989 A CN113176989 A CN 113176989A CN 202110586891 A CN202110586891 A CN 202110586891A CN 113176989 A CN113176989 A CN 113176989A
- Authority
- CN
- China
- Prior art keywords
- information
- file
- source code
- address
- inline function
- 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.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000006870 function Effects 0.000 claims description 104
- 230000004044 response Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 15
- 230000009191 jumping Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 8
- 238000002372 labelling Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 101100219321 Oryza sativa subsp. japonica CYP85A1 gene Proteins 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开实施例涉及一种日志文件的解析方法、装置、设备及存储介质,通过在接收到的日志文件中包括内联函数的第一文件地址时,基于内联函数的第一文件地址从预设的符号表中查找获得内联函数在应用程序源代码展开前的第一位置的信息和展开后的位置的第二信息,并对第一位置的信息和第二位置的信息进行展示。本公开实施例提供的解析方法能够准确地确定出内联函数在应用程序源代码中展开前的位置和展开后的位置,从而能够帮助技术人员更快更准确的确定出故障发生的实际位置,提高故障解析的效率和准确性。
Description
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种日志文件的解析方法、装置、设备及存储介质。
背景技术
相关技术可以基于日志文件和符号表解析出代码出现崩溃的位置。但是如果崩溃位置定位不准确或者不全面,则会影响问题的排查和修复。因此,如何准确全面的定位出代码中的崩溃位置是本领据技术人员亟需解决的技术问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种日志文件的解析方法、装置、设备及存储介质。
一方面,本公开提供一种日志文件的解析方法,包括:
接收到应用程序的日志文件,所述日志文件中包括内联函数的第一文件地址;
基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,所述第一位置是指所述内联函数展开前的位置,所述第二位置是指所述内联函数展开后的位置;
展示所述第一位置的信息和所述第二位置的信息。
可选地,所述符号表中包括所述应用程序的调试信息和源代码段信息;
所述基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,包括:
基于所述第一文件地址从所述源代码段信息中查找获得所述第一位置的信息;
基于所述第一文件地址从所述调试信息中查找获得所述第二位置的信息。
可选地,所述第一位置的信息包括行号;
所述展示所述第一位置的信息和所述第二位置的信息之前,所述方法还包括:
响应于所述行号与预设的错误行号匹配,则将所述行号校正为所述源代码段信息中包括的第二文件地址对应的行号,其中,所述第二文件地址是所述源代码段信息中与所述第一文件地址最接近,且对应于断点位置,地址小于所述第一文件地址的地址。
可选地,所述展示所述第一位置的信息和所述第二位置的信息,包括:
显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注。
可选地,所述显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注之后,所述方法还包括:
响应于针对所述第二位置的第一触发操作,展示所述内联函数的源文件。
可选地,所述展示所述内联函数的源文件,包括:
展示弹出窗口,并在所述弹出窗口中展示所述内联函数的源文件。
可选地,所述显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注之后,所述方法还包括:
响应于针对所述第二位置的第二触发操作,将显示位置跳转到所述第一位置;或者
响应于针对所述第一位置的第三触发操作,将显示位置跳转到所述第二位置。
另一方面,本公开提供一种解析装置,包括:
接收模块,用于接收到应用程序的日志文件,所述日志文件中包括内联函数的第一文件地址;
查找模块,用于基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,所述第一位置是指所述内联函数展开前的位置,所述第二位置是指所述内联函数展开后的位置;
第一展示模块,用于展示所述第一位置的信息和所述第二位置的信息。
可选地,所述符号表中包括所述应用程序的调试信息和源代码段信息;
所述查找模块,包括:
第一查找子模块,用于基于所述第一文件地址从所述源代码段信息中查找获得所述第一位置的信息;
第二查找子模块,用于基于所述第一文件地址从所述调试信息中查找获得所述第二位置的信息。
可选地,所述第一位置的信息包括行号;
所述装置还包括:
校正模块,用于在所述行号与预设的错误行号匹配时,将所述行号校正为所述源代码段信息中包括的第二文件地址对应的行号,其中,所述第二文件地址是所述源代码段信息中与所述第一文件地址最接近,且对应于断点位置,地址小于所述第一文件地址的地址。
可选地,所述第一展示模块包括:
第一展示子模块,用于显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注。
可选地,所述第一展示模块还包括:
第二展示子模块,用于响应于针对所述第二位置的第一触发操作,展示所述内联函数的源文件。
可选地,所述第二展示子模块,具体用于:
展示弹出窗口,并在所述弹出窗口中展示所述内联函数的源文件。
可选地,所述装置还包括:
第二展示模块,用于响应于针对所述第二位置的第二触发操作,将显示位置跳转到所述第一位置;或者响应于针对所述第一位置的第三触发操作,将显示位置跳转到所述第二位置。
再一方面,本公开提供一种计算机设备,包括:
存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如前任一项所述的方法。
再一方面,本公开提供一种计算机可读存储介质,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如前任一项所述的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的符号解析方法在接收到的日志文件中包括内联函数的第一文件地址时,基于内联函数的第一文件地址从预设的符号表中查找获得内联函数在应用程序源代码展开前的第一位置的信息和展开后的位置的第二信息,并对第一位置的信息和第二位置的信息进行展示。本公开实施例提供的解析方法能够准确地确定出内联函数在应用程序源代码中展开前的位置和展开后的位置,从而能够帮助技术人员更快更准确的确定出故障发生的实际位置,提高故障解析的效率和准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种符号解析方法的流程图;
图2为本公开实施例一种展示第一位置的信息和第二位置的信息的示意图;
图3是本公开实施例提供的一种日志文件的解析装置的示意图;
图4是本公开实施例中的一种计算机设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1是本公开实施例提供的一种符号解析方法的流程图,该方法可以由一种计算机设备执行;计算机设备可以示例性的理解为笔记本电脑、台式机、云端服务器、服务器集群等具有计算和处理能力的设备。如图1所示,本公开实施例提供的日志文件的解析方法包括步骤S101-S103。
S101:接收到应用程序的日志文件,所述日志文件中包括内联函数的第一文件地址。
本公开实施例的一个应用中,应用程序可以是运行在用户端设备上的应用程序;在应用程序出现闪退、卡死等异常情况时,用户端设备将出现问题时应用程序执行的方法或函数的地址记录在日志文件中。前述用户端设备与用于分析日志文件的计算机设备通信连接,用户端设备通过与计算机设置之间的通信链路(可以是有线的通信链路也可以是无线的通信链路)将日志文件发送给计算机设备;计算机设备在接收到应用程序的日志文件后,可以解析日志文件。
本公开实施例中,日志文件包括内联函数的第一文件地址。其中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方。在程序源代码中,一般采用关键字inline来标注的内联函数。
本公开实施例的一个实施方式中,内联函数的第一文件地址可以是指内联函数源文件的地址。此时,可以直接基于第一文件地址在预设的符号表中查找内联函数展开前的位置的信息和展开后的位置的信息。
在本公开实施例的另一个实施方式中,内联函数的第一文件地址可以包括内联函数的堆栈地址stack_address和加载地址load_address。在这种实施方式中,可以先用stack_address减去load_address得到内联函数的偏移地址,然后再用偏移地址加上内联函数的起始地址(一般为已知的固定值)得到目标地址。进一步的再基于目标地址查找预设的符号表得到内联函数展开前的位置的信息和展开后的位置的信息。
S102:基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息。
符号表中存储有函数的文件地址(即源文件的地址)与符号之间的对应关系,其中符号可以包括源代码的行号、函数名、文件名。其中在函数为内联函数时,符号表中的符号包括内联函数展开前的行号、文件名,以及内联函数展开后的行号、文件名和函数名等。
基于第一文件地址查找符号表,可以获得内联函数在源程序代码中的第一位置的信息和第二位置信息。
第一位置信息是内联函数展开前的位置的信息,具体的可以是内联函数进行声明或者定义时的位置的信息。
第二位置信息是内联函数展开后的位置的信息,例如,可以是内联函数在应用程序源代码中被调用时的位置的信息。
在本公开实施例的一个应用中,预设的符号表可以包括应用程序的调试信息和源代码段信息,其中,应用程序的调试信息中包括内联函数的源文件的地址与内联函数展开后的位置的信息之间的映射关系,展开后的位置的信息比如可以包括展开位置对应的行号、函数名、文件名等,源代码段信息中包括内联函数的源文件的地址与内联函数展开前的位置的信息之间的映射关系,展开前的位置的信息,比如可以包括展开前的位置对应的行号、文件名等;对应的,基于第一文件地址,从符号表中获取内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,可以包括步骤S1021-S1022。
S1021:基于第一文件地址从源代码段信息中查找获得第一位置的信息。
S1022:基于第一文件地址从调试信息中查找获得第二位置信息。
在本公开实施例的一个具体应用中,符号表具体可以是DWARF(Debugging withAttributed Record Formats)格式的文件。
在DWARF格式的符号表中,源代码段信息存储在DWARF格式文件的debug_line_section中。
在debug_line_section中存储有内联函数的源文件的地址和源程序代码位置的映射关系,例如下表为一种示例性的地址和源程序代码位置的映射关系。
假如步骤S101中获取的第一文件地址被具体为内联函数的源文件的地址,第一文件地址为0x0000000100006404,基于前述表格,确定内联函数在应用程序源代码中的第一位置为位于文件标号为1的文件的第12行。
进一步的,通过查找debug_line_section中“file_names”的条目的信息,即可获得内联函数展开前的文件名。
在DWARF格式的符号表中,调试信息存储在debug_info_section中,在此情况下,基于第一文件地址从调试信息中查找获得第二位置信息可以具体为:从debug_info_section中查找获得第一文件地址(这里假设第一文件地址被具体为内联函数的源文件的地址的情况,在第一文件地址包括堆栈地址和加载地址的情况下,需要根据堆栈地址和加载地址计算出对应的源文件地址)对应的标签为DW_TAG_inlined_subroutine的源代码信息段的进口(The Debugging Information Entry,简称DIE),随后在源代码信息段的进口中找到内联函数对应的展开后的第二位置信息。
例如,在步骤S101中获取的第一文件地址为0x0000000100006404,则查找到对应的源代码信息段的进口如下。
0x0005ecd2:DW_TAG_inlined_subroutine
DW_AT_abstract_origin(0x0005ec41"Add")
DW_AT_low_pc(0x00000001000063fc)
DW_AT_high_pc(0x0000000100006408)
DW_AT_call_file("/Users/fengyadong/work/project
/inlinetest/inlinetest/main.c")
DW_AT_call_line(20)
解析前述源代码信息段的进口,确定内联函数被展开后的文件名为“main.c”,内联函数被展开后的行号为20,因此第二位置的信息为是文件名为“main.c”的应用程序源代码的第20行。
进一步的,还可以从debug_info_section中查找获得第一文件地址(这里假设第一文件地址被具体为内联函数的源文件的地址的情况,在第一文件地址包括堆栈地址和加载地址的情况下,需要根据堆栈地址和加载地址计算出对应的源文件地址)对应的标签为DW_TAG_subprogram的DIE中查找获得“DW_AT_name”标签对应的内容,“DW_AT_name”标签对应的内容即为内联函数展开后的函数名。
S103:展示所述第一位置的信息和所述第二位置的信息。
本公开实施例提供的符号解析方法在接收到的日志文件中包括内联函数的第一文件地址时,基于内联函数的第一文件地址从预设的符号表中查找获得内联函数在应用程序源代码展开前的第一位置的信息和展开后的位置的第二信息,并对第一位置的信息和第二位置的信息进行展示。
本公开实施例提供的解析方法能够准确地确定出内联函数在应用程序源代码中展开前的位置和展开后的位置,从而能够帮助技术人员更快更准确的确定出故障发生的实际位置,提高故障解析的效率和准确性。
在本公开实施例的又一个实施例中,还可以对符号表中解析出的错误行号进行校正。例如,在一个示例中,debug_line_section中存储的源文件的地址和行号之间的映射关系可以表示如下。
其中地址0x0000000100006404对应的是应用程序源代码中的第0行,而这一对应关系明显并不合理,也就是这一对应关系是错误的。
为解决前述问题,本公开实施例的一些应用中,在执行步骤S103前还包括步骤S104:响应于所述行号与预设的错误行号匹配,则将所述行号校正为所述源代码段信息中包括的第二文件地址对应的行号。
步骤S104中,第二文件地址是源代码段信息中与第一文件地址最接近,且对应于一个断点位置,地址小于第一文件地址的地址。
参见上表,与0x0000000100006404最接近,且对应于一个断点位置,地址小于0x0000000100006404的地址为0x00000001000063fc;因此,将0x0000000100006404对应的行号由0修改为0x00000001000063fc对应的行号12。
在本公开实施例的又一个实施例中,计算机设备除了存储有预设的符号表外,还存储有应用程序的源代码。在此前情况下,在本公开一个应用中,步骤S103展示所述第一位置的信息和所述第二位置的信息,具体可以包括S1031:显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注。
图2为本公开实施例一种展示第一位置的信息和第二位置的信息的示意图。如图2所示,其中展示了main.c这一应用程序的源代码,并且标示出了这一程序代码的各行;在确定第一位置的信息为main.c中的第12行,第二位置的信息为main.c中的第20行后,则同时对第12行和第20行的程序代码进行突出显示,以体现第一位置和第二位置。
在本公开实施例的一个具体应用中,在执行步骤S1031后,还可以包括步骤S105:响应于针对所述第二位置的第一触发操作,展示所述内联函数的源文件。
具体应用中,在接收到针对第二位置的第一触发操作时,可以生成一弹出窗口,并在弹出窗口中展示预先得到的内联函数的源文件。
在本公开实施例的一些应用中,在执行步骤S1031后,还可以包括步骤S106:响应于针对所述第二位置的第二触发操作,将显示位置跳转到所述第一位置;或者响应于针对所述第一位置的第三触发操作,将显示位置跳转到所述第二位置。
在本公开的一些应用中,如果接收到针对第二位置的第二触发操作,则将当前显示位置跳转到第一位置,实现第一位置处程序源代码的显示;类似的,如果接收到针对第一位置的第三触发操作,则将当前显示位置跳转到第二位置。如此,用户无需通过下拉操作或者翻页操作,即可以在第一位置和第二位置之间切换,快速查找到对应的应用程序源代码字段。
图3是本公开实施例提供的一种日志文件的解析装置的示意图,该解析装置装置可以被理解为上述计算机设备或者上述计算机设备中的部分功能模块。
如图3所示,日志文件的解析装置300包括接收模块301、查找模块302和第一展示模块303。
接收模块301用于接收到应用程序的日志文件,所述日志文件中包括内联函数的第一文件地址。
查找模块302用于基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,所述第一位置是指所述内联函数展开前的位置,所述第二位置是指所述内联函数展开后的位置。
第一展示模块303用于展示所述第一位置的信息和所述第二位置的信息。
在本公开实施例的一个应用中,所述符号表中包括所述应用程序的调试信息和源代码段信息;
所述查找模块302包括第一查找子模块和第二查找子模块。
第一查找子模块用于基于所述第一文件地址从所述源代码段信息中查找获得所述第一位置的信息。
第二查找子模块用于基于所述第一文件地址从所述调试信息中查找获得所述第二位置的信息。
在本公开实施例的一个应用中,第一位置信息包括行号;所述装置还包括校正模块,校正模块用于在所述行号与预设的错误行号匹配时,将所述行号校正为所述源代码段信息中包括的第二文件地址对应的行号,其中,所述第二文件地址是所述源代码段信息中与所述第一文件地址最接近,且对应于断点位置,地址小于所述第一文件地址的地址。
在本公开实施例的另一应用中,所述第一展示模块包括:第一展示子模块,用于显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注。
在本公开实施例的另一应用中,第一展示模块303还包括第二展示子模块。第二展示子模块用于响应于针对所述第二位置的第一触发操作,展示所述内联函数的源文件。
在一个具体应用中,所述第二展示子模块具体用于:展示弹出窗口,并在所述弹出窗口中展示所述内联函数的源文件。
在本公开实施例的一个应用中,日志文件的解析装置300还包括第二展示模块,第二展示模块用于响应于针对所述第二位置的第二触发操作,将显示位置跳转到所述第一位置;或者响应于针对所述第一位置的第三触发操作,将显示位置跳转到所述第二位置。
本实施例提供的装置能够执行上述任一实施例的方法,其执行方式和有益效果类似,在这里不再赘述。
本公开实施例还提供一种计算机设备,该计算机设备包括处理器和存储器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时可以实现上述中任一实施例的方法。
示例的,图4是本公开实施例中的一种计算机设备的结构示意图。下面具体参考图4,其示出了适于用来实现本公开实施例中的计算机设备400的结构示意图。本公开实施例中的计算机设备400可以包括但不限于诸如移动电话、笔记本电脑、PAD(平板电脑)、服务器等具有计算和处理能力的设备。图4示出的计算机设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备400可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储装置408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有计算机设备400操作所需的各种程序和数据。处理装置401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
通常,以下装置可以连接至I/O接口405:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置406;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许计算机设备400与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的计算机设备400,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从ROM 402被安装。在该计算机程序被处理装置401执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述计算机设备中所包含的;也可以是单独存在,而未装配入该计算机设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该计算机设备执行时,使得该计算机设备:接收到应用程序的日志文件,所述日志文件中包括内联函数的第一文件地址;基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,所述第一位置是指所述内联函数展开前的位置,所述第二位置是指所述内联函数展开后的位置;展示所述第一位置的信息和所述第二位置的信息。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
本公开实施例还提供一种计算机可读存储介质,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时可以实现上述中任一实施例的方法,其执行方式和有益效果类似,在这里不再赘述。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (16)
1.一种日志文件的解析方法,其特征在于,包括:
接收到应用程序的日志文件,所述日志文件中包括内联函数的第一文件地址;
基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,所述第一位置是指所述内联函数展开前的位置,所述第二位置是指所述内联函数展开后的位置;
展示所述第一位置的信息和所述第二位置的信息。
2.根据权利要求1所述的方法,其特征在于,所述符号表中包括所述应用程序的调试信息和源代码段信息;
所述基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,包括:
基于所述第一文件地址从所述源代码段信息中查找获得所述第一位置的信息;
基于所述第一文件地址从所述调试信息中查找获得所述第二位置的信息。
3.根据权利要求2所述的方法,其特征在于,所述第一位置的信息包括行号;
所述展示所述第一位置的信息和所述第二位置的信息之前,所述方法还包括:
响应于所述行号与预设的错误行号匹配,则将所述行号校正为所述源代码段信息中包括的第二文件地址对应的行号,其中,所述第二文件地址是所述源代码段信息中与所述第一文件地址最接近,且对应于断点位置,地址小于所述第一文件地址的地址。
4.根据权利要求1所述的方法,其特征在于,所述展示所述第一位置的信息和所述第二位置的信息,包括:
显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注。
5.根据权利要求4所述的方法,其特征在于,所述显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注之后,所述方法还包括:
响应于针对所述第二位置的第一触发操作,展示所述内联函数的源文件。
6.根据权利要求5所述的方法,其特征在于,所述展示所述内联函数的源文件,包括:
展示弹出窗口,并在所述弹出窗口中展示所述内联函数的源文件。
7.根据权利要求4所述的方法,其特征在于,所述显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注之后,所述方法还包括:
响应于针对所述第二位置的第二触发操作,将显示位置跳转到所述第一位置;或者
响应于针对所述第一位置的第三触发操作,将显示位置跳转到所述第二位置。
8.一种解析装置,其特征在于,包括:
接收模块,用于接收到应用程序的日志文件,所述日志文件中包括内联函数的第一文件地址;
查找模块,用于基于所述第一文件地址,从预设的符号表中查找获得所述内联函数在应用程序源代码中的第一位置的信息和第二位置的信息,所述第一位置是指所述内联函数展开前的位置,所述第二位置是指所述内联函数展开后的位置;
第一展示模块,用于展示所述第一位置的信息和所述第二位置的信息。
9.根据权利要求8所述的装置,其特征在于,所述符号表中包括所述应用程序的调试信息和源代码段信息;
所述查找模块,包括:
第一查找子模块,用于基于所述第一文件地址从所述源代码段信息中查找获得所述第一位置的信息;
第二查找子模块,用于基于所述第一文件地址从所述调试信息中查找获得所述第二位置的信息。
10.根据权利要求9所述的装置,其特征在于,所述第一位置的信息包括行号;
所述装置还包括:
校正模块,用于在所述行号与预设的错误行号匹配时,将所述行号校正为所述源代码段信息中包括的第二文件地址对应的行号,其中,所述第二文件地址是所述源代码段信息中与所述第一文件地址最接近,且对应于断点位置,地址小于所述第一文件地址的地址。
11.根据权利要求8所述的装置,其特征在于,所述第一展示模块包括:
第一展示子模块,用于显示所述应用程序的源代码,并在所述源代码中对所述第一位置和所述第二位置进行标注。
12.根据权利要求11所述的装置,其特征在于,所述第一展示模块还包括:
第二展示子模块,用于响应于针对所述第二位置的第一触发操作,展示所述内联函数的源文件。
13.根据权利要求12所述的装置,其特征在于,所述第二展示子模块,具体用于:
展示弹出窗口,并在所述弹出窗口中展示所述内联函数的源文件。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第二展示模块,用于响应于针对所述第二位置的第二触发操作,将显示位置跳转到所述第一位置;或者响应于针对所述第一位置的第三触发操作,将显示位置跳转到所述第二位置。
15.一种计算机设备,其特征在于,包括:
存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-7中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110586891.3A CN113176989A (zh) | 2021-05-27 | 2021-05-27 | 日志文件的解析方法、装置、设备及存储介质 |
PCT/CN2022/083582 WO2022247441A1 (zh) | 2021-05-27 | 2022-03-29 | 日志文件的解析方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110586891.3A CN113176989A (zh) | 2021-05-27 | 2021-05-27 | 日志文件的解析方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113176989A true CN113176989A (zh) | 2021-07-27 |
Family
ID=76927291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110586891.3A Pending CN113176989A (zh) | 2021-05-27 | 2021-05-27 | 日志文件的解析方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113176989A (zh) |
WO (1) | WO2022247441A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022247441A1 (zh) * | 2021-05-27 | 2022-12-01 | 北京字节跳动网络技术有限公司 | 日志文件的解析方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019227A1 (en) * | 2011-07-15 | 2013-01-17 | Microsoft Corporation | Debugging Inline Functions in Optimized Code |
CN103197942A (zh) * | 2013-03-18 | 2013-07-10 | 华为技术有限公司 | 一种补丁的生成方法、打补丁的方法及装置 |
CN104123218A (zh) * | 2013-04-23 | 2014-10-29 | 腾讯科技(深圳)有限公司 | 一种代码覆盖测试方法、装置和系统 |
CN107092554A (zh) * | 2016-02-18 | 2017-08-25 | 阿里巴巴集团控股有限公司 | 一种应用程序的故障代码确认方法及装置 |
CN110764945A (zh) * | 2019-10-23 | 2020-02-07 | 北京博睿宏远数据科技股份有限公司 | 一种崩溃日志处理方法、装置、设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5583988A (en) * | 1994-03-09 | 1996-12-10 | National Instruments Corporation | Method and apparatus for providing runtime checking features in a compiled programming development environment |
JP2002073371A (ja) * | 2000-09-04 | 2002-03-12 | Nec Microsystems Ltd | プログラムデバッグ方式 |
US8631390B2 (en) * | 2010-04-02 | 2014-01-14 | Apple Inc. | Archiving a build product |
US9104797B1 (en) * | 2013-03-21 | 2015-08-11 | Intuit Inc. | Efficient cloud-based annotation of crash reports |
CN104346274B (zh) * | 2013-07-29 | 2017-06-06 | 国际商业机器公司 | 程序调试器及一种程序的调试方法 |
CN113176989A (zh) * | 2021-05-27 | 2021-07-27 | 北京字节跳动网络技术有限公司 | 日志文件的解析方法、装置、设备及存储介质 |
-
2021
- 2021-05-27 CN CN202110586891.3A patent/CN113176989A/zh active Pending
-
2022
- 2022-03-29 WO PCT/CN2022/083582 patent/WO2022247441A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019227A1 (en) * | 2011-07-15 | 2013-01-17 | Microsoft Corporation | Debugging Inline Functions in Optimized Code |
CN103197942A (zh) * | 2013-03-18 | 2013-07-10 | 华为技术有限公司 | 一种补丁的生成方法、打补丁的方法及装置 |
CN104123218A (zh) * | 2013-04-23 | 2014-10-29 | 腾讯科技(深圳)有限公司 | 一种代码覆盖测试方法、装置和系统 |
CN107092554A (zh) * | 2016-02-18 | 2017-08-25 | 阿里巴巴集团控股有限公司 | 一种应用程序的故障代码确认方法及装置 |
CN110764945A (zh) * | 2019-10-23 | 2020-02-07 | 北京博睿宏远数据科技股份有限公司 | 一种崩溃日志处理方法、装置、设备和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022247441A1 (zh) * | 2021-05-27 | 2022-12-01 | 北京字节跳动网络技术有限公司 | 日志文件的解析方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022247441A1 (zh) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090536B (zh) | 一种获取内存泄露信息的方法、装置、介质和电子设备 | |
CN110960855B (zh) | 一种通信协议代码更新方法、装置、电子设备及存储介质 | |
CN112395253B (zh) | 索引文件生成方法、终端设备、电子设备及介质 | |
CN110795910B (zh) | 一种文本信息处理方法、装置、服务器及存储介质 | |
CN113157731A (zh) | 符号解析方法、装置、设备及存储介质 | |
CN111309304B (zh) | 一种生成idl文件的方法、装置、介质和电子设备 | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN113806212A (zh) | 应用程序异常定位方法、装置以及电子设备 | |
CN113641873B (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN111597069A (zh) | 程序处理方法、装置、电子设备和存储介质 | |
CN109902726B (zh) | 简历信息处理方法及装置 | |
CN111258803A (zh) | 崩溃定位方法、装置及电子设备 | |
CN113176989A (zh) | 日志文件的解析方法、装置、设备及存储介质 | |
US20180314683A1 (en) | Method and device for processing natural language | |
CN112596738B (zh) | 待测试前端页面的确定方法、装置、存储介质及电子设备 | |
CN111506904B (zh) | 漏洞在线修复的方法和装置 | |
KR20190020363A (ko) | 동적 분석과 정적 분석을 연계한 프로그램을 분석하기 위한 방법 및 장치 | |
CN111752644A (zh) | 接口模拟方法、装置、设备及存储介质 | |
CN111737040B (zh) | 程序代码修复方法及装置 | |
CN112084086B (zh) | 一种信息收集方法、装置、介质和电子设备 | |
CN111539200B (zh) | 一种生成富文本的方法、装置、介质和电子设备 | |
CN111027281B (zh) | 划词方法、装置、设备及存储介质 | |
US9477448B2 (en) | Screen-oriented computing program refactoring | |
CN111797009A (zh) | 用于检测代码兼容性的方法、装置和电子设备 | |
CN112783903A (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 |