生成与日志文件中的错误相关的代码语句块的可视化的制作方法

文档序号:33624934发布日期:2023-03-25 16:41阅读:61来源:国知局
生成与日志文件中的错误相关的代码语句块的可视化的制作方法

1.本发明涉及用于生成与日志文件中的错误相关的代码语句块的可视化的计算机程序产品、系统和方法。


背景技术:

2.在软件开发中,开发者将分析包含记录的错误的日志文件以确定错误的源,以便确定是否需要对程序源代码进行改变。进一步,在应用部署期间,可以生成日志文件,其列出发生的可能对用户体验造成破坏的错误。开发者或用户将必须分析日志文件以确定错误的源和待实施的校正动作。开发者可检查日志文件以确定对源代码的改变是否是必要的,而用户可审阅错误的日志文件以确定可能适当的校正动作的类型,诸如下载程序更新或向公司通知这些错误。日志文件难以审阅,因为它们可能具有数百条错误条目,这些条目带有可能未传达问题的源的简略解释。
3.本领域中需要用于帮助应用开发者和用户理解日志文件中记录的错误的改进技术。


技术实现要素:

4.提供了用于生成与日志文件中的错误相关的代码语句块的可视化的计算机程序产品、系统和方法。日志文件记录在程序代码的执行中的错误。分析从其编译所述程序代码的源代码以确定所述源代码中的其执行导致所述日志文件中的所述错误的语句块。用由所述源代码中的语句块引起的所述日志文件中的所述错误来注释所述语句块。用错误注释了的语句块的执行导致在所述日志文件中记录的所述错误。处理所注释的语句块以生成视频,所述视频提供所述源代码中的其执行导致所述错误的所述语句块的可视化。
附图说明
5.图1示出了其中实现实施例的计算设备的实施例;
6.图2示出了日志文件、与日志文件中的错误相关的注释有日志文件错误的语句块、被生成以显示源代码中的与错误相关的语句块的流程的流程图、以及使用化身来符号化对程序的手动信息输入的源代码的可视化的示例;
7.图3a和3b示出用于生成视频的操作的实施例,该视频包括源代码的与日志文件中的错误相关的语句块的可视化;以及
8.图4示出了其中可以实现图1的组件的计算环境。
具体实施方式
9.所描述的实施例提供对计算机技术的改进,以帮助用户或软件开发者理解所生成的错误的性质,诸如日志文件中的错误以及这些错误如何涉及其执行导致错误的底层源代码。为了允许用户可视化错误的源,所描述的实施例提供了用于生成其执行导致所选择的
错误的代码语句的动画视频的技术,以允许用户在视频中观察导致所记录的错误的代码。此外,如果在问题大量增加时错误传播,则所描述的实施例可以提供程序语句的可视化,该可视化显示错误在执行期间如何传播。
10.所描述的实施例提供了用于分析日志文件以标识导致所记录的错误并且基于程序逻辑而被自动执行的活动以及由用户输入手动触发的活动的计算机技术的改进。所描述的实施例创建形式为动画视频的可视化,该动画视频显示在产生日志文件中的错误时涉及的代码语句的流程图。用于导致接收用户输入的错误的代码语句的动画可包括表示用户输入的动画,以在视觉上将用户的注意力引导到与用户输入相关的错误,这些用户输入通常是所记录的错误的原因。
11.图1示出了其中实现实施例的计算设备100的实施例。计算设备100包括处理器102和主存储器104。主存储器104包括不同程序组件和文件,它们包括:操作系统108;可视化管理器110,用于管理根据日志文件112中的错误来创建视频的过程;代码分析器114,用于处理日志文件112中的错误和源代码116(其执行导致所记录的错误),以确定源代码116中的其执行导致日志文件114中的错误的语句块;所注释的语句块118,其由代码分析器114产生并且包括这样的语句块,该语句块的执行导致日志文件112中的错误并且该语句块被注释有日志文件112中的错误语句;图形开发工具120,用于处理所注释的语句块118,生成显示语句块的流程的流程图122以及生成利用用户输入124的表示被动画化的语句块的可视化124;视频生成器126,用于接收流程图122以及利用用户输入的表示被动画化的语句块的可视化124,以生成视频128的帧,从而动画化表示导致所记录的错误的源代码116语句块的流程图的步骤,以及用显示涉及导致错误的用户输入的语句的图形来动画化源代码。
12.存储器104可以包括合适的易失性或非易失性存储设备,包括上述那些设备。
13.通常,诸如程序组件108、110、114、120、126的程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。图1的计算设备100的程序组件和硬件设备可以在一个或多个计算机系统中实现,其中如果它们在多个计算机系统中实现,则计算机系统可以通过网络通信。
14.程序组件108、110、114、120、126可由处理器102从存储器104存取以执行。替代地,程序组件108、110、114、120、126中的一些或全部可以在单独的硬件设备(诸如专用集成电路(asic)硬件设备)中实现。
15.被描述为由程序108、110、114、120、126执行的功能可以被实现为比所示更少的程序模块中的程序代码,或被实现为遍及比所示更多数量的程序模块的程序代码。
16.图2示出了所列出的错误的日志文件112如何映射到源代码200中的语句块,这些语句块然后将被用日志文件112中的错误来注释。图形开发工具接收日志文件112、用户对日志文件112中的错误的选择以及源代码116的语句块210(语句块210的执行导致日志文件112中的用户选择的错误),以生成显示导致由用户选择的来自日志文件112的错误的语句块的流程的流程图202,以及生成可视化204,可视化204可被实现为具有语句210’的文件或对象,语句210’的执行导致日志文件112中的所选错误,可视化204针对导致用户选择的记录错误的那些语句块210’具有化身206的动画。视频生成器126可以生成显示流程图202的帧,随后是显示语句块210的可视化的帧204,语句块210被用用户206的表示进行动画显示,用户206表示在语句块210’的执行期间所接收的用户输入。流程图202示出流程图的一个
帧,其中流程图中的第一步骤208被突出显示,并且在帧202之后显示下一帧204,以示出针对突出显示的步骤208的语句块210’和表示在语句210’的执行期间接收到用户输入的用户化身206。以此方式,向用户提供视频128,视频128显示导致所选错误的语句流202的动画以及来自流程图202中突出显示的步骤208的语句210’(在该处接收到用户输入)的帧中的用户206的图形,以将用户注意力吸引到导致错误的在该处接收到用户输入的那些语句210’。
17.图3a和3b示出由可视化管理器110、代码分析器114、图形开发工具120和视频生成器126执行以生成视频128的操作的实施例,视频128提供源代码中的其执行促成日志文件112中的所选错误的语句块的可视化。在接收到对错误的日志文件112中的一个或多个错误条目的用户选择(其可以包括对整个日志文件112或条目的子集的选择)之后,可视化管理器110调用(在块302)代码分析器114以确定源代码116中的其执行导致针对日志文件112中的所选条目的错误的语句块。代码分析器114可使用日志文件112中的所选条目中的信息来标识源代码116中的其执行导致错误的语句。代码分析器114用所选条目中的与由语句块引起的错误有关的信息来注释(在框304)来自源代码116的所确定的语句块以产生所注释的语句块118。所注释的语句块118将日志中的错误映射到其执行导致错误的源代码116。代码分析器114处理(在框306)所注释的语句块118以确定任何语句是否经由用户接口接收到用户输入。
18.如果(在框308)存在导致所记录错误的接收用户输入的语句块,则图形开发工具120捕获(在框310)用户在其中在导致所记录错误的语句块处键入输入的用户接口的屏幕截图。在语句块的可视化中生成(在框312)动画,该可视化被用显示用户接口屏幕截图的用户输入124的表示和/或与在该处接收到用户输入的语句块相邻的人的化身来动画化。如果(在框308)不存在导致错误的在该处接收到用户输入的语句块或在用用户输入124的动画生成(在框312)语句块的可视化之后,图形开发工具120处理(在框314)所选日志条目的时间戳以确定错误发生的顺序。图形开发工具120处理(在块316)所注释的语句块118和语句块的顺序以生成显示具有导致日志文件112的所选条目中的错误的语句块的步骤流程的流程图122。流程图122的每个步骤可包括导致所选错误之一的语句块中的一个或多个语句。流程图中的具有导致错误的语句的步骤可以根据日志文件中的错误条目中的错误的时间戳而被排序。控制然后前进到图3b中的框320。
19.对于流程图122中的每个步骤i,执行从框320至328的操作循环。视频生成器126生成(在框322)视频流128中的帧,该帧显示流程图122,其中突出显示步骤i以表示该步骤当前正在被处理。如果(在框324)步骤i涉及接收用户输入,则视频生成器126利用用户接口屏幕截图和/或人的化身的动画来生成(在框326)视频流128中的显示与流程图122中的步骤i相对应的源代码语句块的帧,以表示针对在高亮显示的步骤i中表示的语句块的用户输入。如果(在框324)流程图122中的步骤i未接收到用户输入,则视频生成器126生成(在框328)视频流128中的显示与流程图122中的步骤i相对应的源代码语句块的帧。在框326或328处生成显示对应的源代码的帧之后,如果存在其他步骤,则控制继续(在框330)返回至框320以处理流程图122中的下一个步骤(i+1)。以此方式,视频生成器126可以为流程图122流中的每个步骤的执行创建至少一个帧,以按照日志文件112中的错误条目的时间戳的顺序来显示导致错误的程序语句的执行。视频流128优选地在用户正在查看日志文件112的同时被播放(在框332)以提供语句的源代码流的视觉表示,以允许用户或开发者通过与日志文件
中的错误相关的源代码的可视化来更好地理解这些错误的原因。
20.利用图3a和3b的实施例,在用户选择日志文件112中的感兴趣的错误条目时,源代码116被处理以确定引起错误的语句和对源代码语句的可视化(采取流程图和用于流程图步骤的语句的形式)。在该处接收用户输入的语句块的可视化被提供有用户输入的动画以将用户注意力吸引到接收用户输入的语句部分,因为许多发生的错误可能是用户输入而不是源代码116中的错误或缺陷(bug)的结果。此外,由于计算机用户习惯于观看技术方案和修复的视频呈现,因此这种显示导致所选错误的代码流的视频的实时生成将帮助用户更好地理解代码执行中的错误源。
21.在其他实施例中,开发者可以用虚拟现实接口来可视化动画视频128并且与在虚拟现实环境中创建的对象进行交互,以通过选择在视频中呈现的流程图122中的步骤来进一步查看源代码语句或运行时参数以在虚拟现实环境中再现问题。
22.在其他实施例中,诸如当应用发出数据库查询以与数据库交互时,可存在多层日志文件,诸如应用层、数据库层等。在这种情况下,用户可以从多层日志文件中选择错误,并且流程图122可以描绘跨多个层的步骤,以提供与用于单独的程序层(诸如数据库层、应用层、网络层等)的单独的层日志文件中的所选错误相关的代码的可视化。所描述的实施例可以使用日志类型和时间戳分析在来自不同层的不同层日志文件之间创建共同关系。用户可以从一个层选择日志并使用与视频的交互(诸如利用虚拟现实接口)无缝地导航到另一个层中用于该问题的对应的相关日志。
23.在其他实施例中,可以基于日志文件112中的错误(例如,根因分析、补救等)来创建知识语料库。可基于在历史上从应用捕获的数据来创建知识语料库。在确定与日志文件中的错误和对应的语句块相关的知识语料库分析和建议之后,可以在视频中再现知识语料库中的信息。
24.本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),这些计算机可读程序指令用于使处理器执行本发明的各方面。
25.计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
26.本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络
接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
27.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言(包括面向对象的编程语言,例如java、smalltalk、c++等)和常规过程编程语言(例如“c”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
28.在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
29.这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
30.计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
31.附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
32.图1的计算组件(包括计算机系统100)可以在一个或多个计算机系统中实现,诸如图4所示的计算机系统402。计算机系统/服务器402可以在计算机系统执行的诸如程序模块的计算机系统可执行指令的一般上下文中描述。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器
402可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
33.如图4所示,计算机系统/服务器402以通用计算设备的形式示出。计算机系统/服务器402的组件可以包括但不限于一个或多个处理器或处理单元404、系统存储器406、以及将包括系统存储器406在内的各种系统组件耦接到处理器404的总线408。总线408表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子技术标准协会(vesa)局部总线和外围组件互连(pci)总线。
34.计算机系统/服务器402通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器402访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
35.系统存储器406可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)410和/或高速缓存存储器412。计算机系统/服务器402还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统413可被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如cd-rom、dvd-rom或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这样的实例中,每个可以通过一个或多个数据介质接口连接到总线408。如下面将进一步描绘和描述的,存储器406可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本发明的实施例的功能。
36.作为示例而非限制,具有一组(至少一个)程序模块416的程序/实用程序414以及操作系统、一个或多个应用程序、其它程序模块和程序数据可被存储在存储器406中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。计算机402的组件可以被实现为程序模块416,其通常执行如在此所描述的本发明的实施例的功能和/或方法。图1的系统可以在一个或多个计算机系统402中实现,其中如果它们在多个计算机系统402中实现,则计算机系统可以通过网络通信。
37.计算机系统/服务器402还可与一个或多个外部设备418通信,诸如键盘、指点设备、显示器420等;一个或多个设备,其使得用户能够与计算机系统/服务器402交互;和/或使计算机系统/服务器402能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可以经由输入/输出(i/o)接口422发生。此外,计算机系统/服务器402可以经由网络适配器424与诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,因特网)之类的一个或多个网络通信。如所描绘的,网络适配器424经由总线408与计算机系统/服务器402的其他组件通信。应当理解,尽管未示出,但是可以结合计算机系统/服务器402使用其他硬件和/或软件组件。实例包括但不限于:微码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器、以及数据档案存储系统等。
38.术语“实施例”、“多个实施例”、“该实施例”、“这些实施例”、“一个或多个实施例”、“一些实施例”和“一个实施例”表示“本发明的一个或多个(但不是全部)实施例”,除非另有明确说明。
39.术语“包括”、“包含”、“具有”及其变体表示“包括但不限于”,除非另有明确说明。
40.除非另外明确规定,否则列举的项目列表并不意味着任何或所有项目是互斥的。
41.术语“一”、“一个”和“该”表示“一个或多个”,除非另有明确说明。
42.除非另外明确指出,否则彼此通信的设备不需要彼此连续通信。另外,彼此通信的设备可以直接通信或通过一个或多个中间物间接通信。
43.具有彼此通信的若干组件的实施例的描述并不暗示需要所有此类组件。相反,描述了各种可选组件以说明本发明的各种可能的实施例。
44.当在此描述单个设备或产品时,很明显,可以使用多于一个的设备/产品(无论它们是否协作)来代替单个设备/产品。类似地,在本文描述了多于一个设备或产品(无论它们是否协作)的情况下,将容易明白的是,可以使用单个设备/产品来代替多于一个设备或产品,或者可以使用不同数量的设备/产品来代替所示数量的设备或程序。设备的功能和/或特征可以替代地由一个或多个未明确描述为具有这样的功能/特征的其他设备来体现。因此,本发明的其它实施例不需要包括该设备本身。
45.为了说明和描述的目的,已经给出了本发明的各种实施例的上述描述。其不是穷举的,也不是要将本发明限制为所公开的精确形式。根据上述教导,许多修改和变化是可能的。本发明的范围不是由该详细描述来限定,而是由所附权利要求来限定。上述说明、示例和数据提供了对本发明的组成的制造和使用的完整描述。由于在不脱离本发明的精神和范围的情况下可以做出本发明的许多实施例,因此本发明在于所附权利要求书。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1