CN1118473A - 计算机程序中错误的诊断和改正工具及方法 - Google Patents
计算机程序中错误的诊断和改正工具及方法 Download PDFInfo
- Publication number
- CN1118473A CN1118473A CN95108183A CN95108183A CN1118473A CN 1118473 A CN1118473 A CN 1118473A CN 95108183 A CN95108183 A CN 95108183A CN 95108183 A CN95108183 A CN 95108183A CN 1118473 A CN1118473 A CN 1118473A
- Authority
- CN
- China
- Prior art keywords
- program
- debug command
- function
- information
- computer
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Digital Computer Display Output (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
这里公开了一种用于在计算机系统中调试复杂计算机程序的改进的工具和方法。该工具从计算机的内存和/或远程存储器中提取出关键的调试信息并使用此信息图形化地描述出作为调试操作对象的程序的各组成函数间的调用关系。该工具利用用户通过图形用户接口直接在程序函数的图形表示上所执行的操作来接受调试命令。该工具通过图形用户接口接受用户命令并使用此相同的接口显示关键的调试信息的功能极大地方便了程序的调试。
Description
本发明涉及到用于寻找和改正计算机程序中错误的系统和方法,尤其是用于在软件调试过程中图形化地显示程序结构并控制程序执行的系统和方法。
新生成的计算机程序常常有一个或多个疏忽造成的错误。某些软件错误可能导致软件系统的完全崩溃,而其它一些可能导致不正确的操作,虽然商业化软件开发者事实上会花费全部开发时间的50%~70%来检查计算机程序的错误并改正这些错误,但几乎不可避免地,甚至在发行给公众的软件的产品版本中也存在一些错误(故障)。因此,极其需要一种高效和有力的调试软件的方法。
调试是识别并分离出一个软件错误以改正这个问题的过程,通常这个过程包括检查构成软件程序的代码行并/或观察程序的执行以确定异常操作的原因。
在调试程序的现有技术中,用户可能首先一行行地阅读程序以试图寻找错误或多个错误。然而,即使在一个比较简单的程序中,通过一行行地阅读程序来跟踪程序流程可能会是极其困难和耗时的。如果程序包括许多循环、子程序、函数调用、变量和诸如此类的东西,用户可能无法跟踪程序执行的顺序,因此不能确定计算机程序每一行执行的效果。
“调试器”是一个软件诊断工具,它提供给用户观察并控制程序执行(包括程序状态和变量的值)的机制以帮助用户识别程序代码中的错误,利用现有技术的调试器,用户可以通过输入一个或多个调试命令并观察随后程序执行的结果来控制有错误软件程序的操作。例如,可以调用一条调试器命令在有错误程序的一个位置设置一个“断点”。断点的作用是当到达断点位置时暂停程序的执行,然后用户可以使调试器显示所选变量的值。当前水平的调试器可以显示断点之前和之后数行反汇编机器码和/或相应的源码。然而,即使当前水平的调试器也无法预测何处和是否会有程序转移。因此,当前水平的调试器的一个缺点是它们所显示的暂停点后的几行代码简单地是程序中随后连续数行的代码。当用户恢复程序操作后这些代码行可能不是将执行的代码。
典型的调试命令包括:“单步执行命令”,一次执行一行程序,在它们执行时可能同时显示这行代码;“监视值命令”,当程序运行时显示所选变量的变化值;“跟踪命令”,显示栈中一列激活的函数;“数据中断命令”,当发生用户选择的条件如变量达到一个预定值时,停止程序的执;和一条“赋值命令”,把一个用户选择的值赋给变量。
尽管调试器有广泛的应用,调试仍然是困难和费时的,一个原因是现有技术的调试器是基于文本的,即调试器以一系列文本行的形式向用户提供信息并以相同的格式接受命令。例如,使用现有技术的调试器,用户可输入一个命令使调试器在程序的一个特定行放置一个断点,或者使用鼠标,在一个代码行“点中并敲击”以在这行的开始放置一个断点。断点发生时,现有技术的调试器可以显示包括执行到断点处的反汇编机器码的文本行,相应的一行或多行源代码和一定的所选变量的值。
基于文本级的调试器的操作有许多缺点,例如,用户须非常熟悉所调试程序的组织结构,因为调示器只能显示包含程序实际经过的执行路径的代码行,调试器不能告诉用户使用不同输入数据集时可能执行哪条可选的执行路径,现有技术的调试器还不能告诉用户位于断点处的函数将调用哪个函数。用户必须通过检查所显示的代码来推导出这些信息,这样,为了完全了解断点处程序的状态,用户必须推断出并记下一个各种执行路径的复杂的想象中的图,这些路径是到达当前状态可能采用的和一旦下一条调试命令使程序恢复执行时可能采用的。
现有技术调试器的用户常常发现他们自己处于有点象没有路线图的横穿全国的旅行者的状况,为到达每下一个十字路口,必须询问各个方向内最近城镇的名字,没有一张给出位于起始点和到达目的地前的全部道路的路线图,旅行者不可能计划一条最有效的到达最终目的地的路线,仅仅使用试谬法来代替路线图,旅行者可能很容易迷路,可能不得不往回走并且会常常发现自己走到了死胡同。
尽管调试技术有许多进展,生成一个无错误软件还是一个远未实现的难以捉摸的目标,实际上,软件系统复杂性日益增长的趋势使得达到这一目标更加困难,这样,调试器是影响编程者效率的最重要工具之一。但令人惊奇的是,尽管软件工业已经对调试器作出了相当大的努力,它们的使用仍然很不方便。(发明者认为这个结果来自于这个事实,即现有技术的调试器所基于的模型是用于支持传统的基于字符的终端)。
由上所述,很明显需要一种改进的调试工具,特别需要这样一种调试工具,这种工具可以从复杂性日益增长的软件中提取关键调试信息,以图形的方式显示信息,另外,允许用户通过直接在程序的图形显示上执行的操作来控制程序的执行。
本发明提供一种改进的具有图形用户接口的调试器,此调试器最好在一个用户服务器计算环境中操作。
这个调试器的一部分(此后称为″调试器服务器″)最好在与被调试的程序相同的服务器计算机上执行。调试器服务器接收从客户计算机传送来的调试命令并与服务器的操作系统协同执行这些命令。调试器读取一定的信息,称作“符号表”,它典型地存储于服务器计算机的内存里或一个相关的磁盘存储子系统上。调试器服务器还从计算机的内存中读取程序的状态信息。利用这些符号信息,调试器服务器得出程序内所包含函数的“调用关系”,即哪个函数可能调用哪个其它函数,然后服务器计算机把这些信息和当前程序状态传送给客户计算机。
调试器的图形用户接口部分最好驻留在客户计算机中。调试器的这部分接收从服务器传送来的调用关系信息和程序状态信息。利用这些信息,用户接口构造并显示一张组成被调试程序的函数图。例如,调试器可以显示程序的树形图形表示,其中构成程序的每个函数表示为图上的一个节点并且函数之间的调用关系由连接节点的线表示,这样一张图称作“调用树”。
本发明的接口以几种用户选择的方式显示调用树。这棵树用作调试的“路线图”,使得用户可以容易地确定程序在将来可能采用的执行路径的集合。接口还用如用户所选择变量的值的附加信息来注释调用树,高亮度显示由函数调用栈确定的当前执行路径,并且当在函数中设置断点时,以任何便利的方法指示出来。接口还提供可加到由调用树节点表示的函数的调试命令。这些命令包括一次单步执行一个函数的功能,观察与函数相关的源代码的功能,在函数中设置断点的功能,和“展开”与“压缩”调用树节点的功能,这些将在后面进行详细讨论。接口把这些命令传送到服务器计算机执行。
用户可以在一个相关键盘上通过键入命令以常规方式将命令输入到客户计算机内,然而,根椐本发明的一个重要方面,另一方案是,用户可以通过图形接口简单地用一个鼠标点中并敲击来控制调试器和直接输入调试命令,鼠标首先直接在显示的调用树上命令将执行的节点处敲击然后在例如用于期望调试命令的图标或菜单项的一个图形符号处敲击。。
本发明图形地表示调试信息并通过图形接口接收调试命令的功能极大地方便了软件调试过程。特别是本发明的调试器的显示调用图功能,在图上指示出最后执行的函数及所有先前执行的函数和所有在程序执行的暂停点可能被调用的函数,这种功能极大提高了用户透彻地容易地理解程序当前状态的能力。
与前面描述的横穿国家的旅行者类似,本发明相当于提供给旅行者一张在起始点和最终目的地之间所有高速公路和地面街道的完整路线图。这样一张路线图使得旅行者可以确定到达一特定目的地的最佳可能方式。与此类似,本发明提供给编程者同一类型的路线图使得旅行者可以确定调试程序的最佳的、最有效的方式。
当结合附图对本发明详细描述之后,本发明的这些和其它优点将变得更明显。
现在将参照附图对本发明进行描述。
图1是一个用于实现本发明一种最佳实施方式的客户/服务器计算系统的框图。
图2图示了服务器计算机中栈的存储组织形式。
图3是一个图示复杂计算机程序文件组织形式的框图。
图4是表示源代码转换为执行代码的流程图。
图5是一个图示编译器为被调试的程序生成的符号表文件结构的框图。
图6是一个由本发明的调试器生成并显示的动态调用树,它图示了一个定单处理程序调试前的可能执行路径。
图7a和图7b是根据本发明的一种最佳实施方式的流程图。
图8是一个由本发明的调试器生成并显示的动态调用树,它图示了例示的定单处理程序的状态,其中函数“Main”调用了函数“Get Order”,后者接下来调用函数″Verify Order”,当同图6比较时,“Verify Order”节点可以展开,以显示它的子节点(函数)。
图9是一个由本发明的调试器生成并显示的动态调用树,它图示了和图8相同的程序状态,但是另外,这张图表示Verify Order节点被选中并且用户发出一条命令来显示构成Verify Order函数的源代码。
图10是一个由本发明的调试器产生的显示程序组织形式的无环调用树。
图11是一个显示与图8所示相同程序的组织形式的有环调用树。
下面的描述是目前实现本发明最成熟的模式。这些描述是为了表示本发明的一般原理而不是作为一种限制。
如图1所示,本发明的调试器设计为最好用于一个客户/服务器计算环境100。服务器计算机102通过总线或I/O通道104与一个相关盘存储子系统106通信。服务器计算机102包括一个CPU108和用于存储有关程序执行的状态信息的RAM 110。RAM110的一部分用于存储寄存器状态和与当前正在服务器计算机102上运行程序的各个函数相关的局部变量。RAM的这部分一般称作一个“程序栈”或简称为“栈”202(图2)。如图2所示,RAM单元与附属于每个这种函数的信息有关,以称作“帧”的数据结构200的形式加以组织。
客户计算机112(图1)类似地包括RAM 114,相关盘存储器116,一个键盘118,一个鼠标120和一个视频显示终端(VDT)112。客户机CPU 123通过总线或I/O通道124与盘存储子系统116通信,通过I/O通道126与键盘118,VDT 112和鼠标120通信。
按照最佳的客户/服务器模型,最佳地设计了本调试器软件的各部分以同时在客户112和服务器102计算机上操作。调试器软件的两部分所执行的操作之间的协调由通过一个网络128的通信来维持。
如下面将更详细的描述,今天的大部分软件程序用称作第三代高级语言的语言书写,这种语言由编译器翻译成机器指令。用第三代语言书写的程序以函数(也称作过程或子程序)的形式来组织。函数定义为执行特定的处理任务。它们由一行或多行源代码组成并可以带有它们自己的局部变量,这些变量包含此函数独有的状态信息,函数可以调用其它函数来执行特定任务。当这种情况发生时,执行转到被调用的函数并且当被调用的函数完成要求的任务后又返回调用函数。
程序的执行状态保存在一个“调用栈”中,它位于计算机内存中,记录被调用的各个函数的当前执行位置。当一个函数被调用时,调用函数的当前执行位置记录在栈中。当被调用的函数完成后,从栈中删除这个位置并在调用函数中所记录的位置处恢复执行。
众所周知,在编程技术中,程序从主程序开始执行,作为主程序的过程调用其它程序完成各种处理任务,这些其它被调用的程序可以依次调用其它附加的程序。程序在任意特定时刻的执行状态由程序调用栈来表示。
如图3所示,一个被调试的典型程序,如一个定单处理程序,可以由几个源代码程序构成:(a)Main 300;(b)Input 302;(c)Pro-cessing 304;和(d)Output 306。各个源代码文件300,302,304,306由几个函数308构成,每个函数308典型地包含多行源代码310,并且在完成它的任务或一特定事件发生时,每个函数将或者开始(或调用)另一函数308的操作,或返回调用它的函数308,由后者执行。
这个定单处理程序在计算机102上运行之前,它的源代码文件300,302,304,306必须经过编译。编译过程把人可读的源代码310转化为二进制代码,称作“目标代码”。许多商业化的编译器可以和本发明联合使用。例如,可以使用加利福尼亚,Cupertino的Tandem计算机公司的Tandem C编译器。这个编译器生成公用目标文件格式(″COFF″)的目标文件。许多UNIX编译器也生成COFF文件。任何特殊编译器的使用对于本发明是不重要的,只要这个编译器产生这里所描述的本发明调试器所用的必要信息。
如图4所示,编译器410把各个源代码文件300,302,304,306转化为目标代码文件400,402,404,406。除了把源代码翻译成二进制计算机指令,用户还可以令编译器410在每个目标代码文件400,402,404,406中包含一定量的附加信息,称作“符号信息”。这些符号信息包括,例如,变量名,函数名,变量地址和在目标文件中所有一个函数调用另一函数的位置表。对于本发明的操作,特别有意义的是符号信息中调试器可以确定不同函数308之间的层次调用关系,即哪些函数308可调用哪些其它函数308的那部分。符号信息典型地构成了存储在计算机内存110中的目标文件400,402,404,406的一部分。但是可选择地,符号信息可以存储于位于盘存储子系统106上的一个独立文件中。如下面将进行解释那样,符号信息主要用在可执行程序的调试中。
图5图示了两个典型目标代码文件500,502的结构。每个文件的头段504包含指向文件各个段开始位置的指针,例如,头段包含对于组装表的文件偏移,每个文件的静态数据段506包含程序所使用的全部常量。每个文件的指令代码段508包含执行程序用的实际二进制代码指令。每个文件的函数入口点表510包含位于相关文件中的函数表和各个函数的地址。组装表512是每个相关文件中一个函数308调用另一个函数308的地址的表。每个未分解外部参考表514包含一个所有在这个文件中引用而在其它地方定义的函数308的表。
所有目标代码文件最终提供给一个链接器412(图4)。链接器412是一个软件程序,它把不同的目标文件400,402,402,406合并或者链接成一个可被计算机102执行的程序414,链接器412的一个重要功能是读取各个目标代码文件400,402,404,406的函数入口点表510,组装表512和未分解参考表514,共同包含于这三个表中的信息足以使链接器412生成一个可执行代码文件414,它具有如图5中所示的相同数据结构和初始位于构成此程序的所有目标代码文件400,402,404,406中的不同函数之间的所有必要的参考或逻辑连接516(图5)。
尽管本发明不要求使用根据COFF标准产生目标代码文件的编译器,但假如使用了这样一个编译器,就可使用Tanden计算机公司的本地链接器/装载器来链接目标代码文件。另一方案也可使用任何能处理其它目标文件格式的链接器。而且,如这里所述,只要给本发明调试器的运行提供必要的信息,使用任何特定的链接器或任何特别的文件格式对本发明都是无关紧要的。
在程序执行过程中,服务器计算机102在其内存110中保持信息,称作“状态信息”。顾名思义,状态信息是重建CPU 108的当前状态所需的所有信息。状态信息包括栈202(图2)。在通常情况下,此信息作为帧200的链接204表存于主存110中。从技术上可知,栈指针指示计算机102当前所执行的链接表中的函数。
调试器服务器读取服务计算机存储器110中或盘106上所存的符号信息。由先前所述将很清楚,通过读取链接器410为参考516向516其它目标代码文件和组装表中函数所补充的函数入口点表510,调试器能获得所有必要的信息以建立示例定单处理应用程序(或任何其它正在调试的程序)的完全调用图。或者,在下列特殊情况下,即调试器在COFF文件上运行而COFF标准未包含组装表时,可通过搜索所有在一个函数调用另一个函数的地址处的机器指令代码来简单地将调试器编程出综合的组装表信息。
图6图示了这样一个用于例示定单处理程序的调用图。图中十二个节点600中的每一个节点代表全部程序中所包含的某个特定函数。连接节点600的线602表明最左边的函数可调用靠右边的函数。例如,如图中所示,主程序函数可以开始调用获得定单,更新数据库,打印发票等函数(节点)。接着,每个这样的函数660调用辅助的函数以执行在计算机终端上绘制视觉显示,读取用户输入等物理步骤。
调试器服务器还从服务器计算机102的存储器110中的目标程序地址空间中读取栈信息并确定栈的202的状态。根据前面的讨论,熟练的技术人员将会知道:计算机一般专门具有一个栈指针寄存器,或使用一个通用寄存器作为栈指针。本发明的调试器使用栈指针寻找第一个栈帧200。由于所有的栈帧是链接的204,调试器就能很容易地找到其余的帧。读取符号信息后,如上所述得出建立调用图所必要的信息并获得栈信息,然后服务器将调用图和栈信息传送给客户计算机112。
本发明的最佳实施方式中包含驻留于客户计算机112中的图形接口软件。图形接口软件在VDT 122上显示调试信息并接收来自用户的调试命令,命令或通过键盘118或由鼠标输入,鼠标以众所周知的方式在VDT118上操作可移动光标或指示符606(图6)。
图形接口软件最好包含现成的图形软件包作为它的一部分,例如:Microsoft Windows,可从华盛顿Redmond的微软公司获取,或zApp Application Framework,可从加利福尼亚Mountain View的Inmark开发公司获取。也可使用如这里所述的能建立图形并完成用户交互操作的类似的商用图形软件包。
使用已建立的算法,如发表在“Methodsfor Visual Understand-ing of Hierarchial Systems Structures”,Kozo Sugiyama,ShojiroTagawa和Mitsuhiko Toda所著和IEEE Transactions On Sys-tems,Man andCybenetics杂志,SMC—11卷,第2期,1981年9月,第109—125页;论文:Michael B.Davis著,“A Layout Algorithmfor A Graph Browser”,U.C.Berkeley Engineering Library;或“ABrowser for Directed Graphs”,Lawrence W.Rowe,MichaelDavis,Carl Meyer,Charles Spirakis和Alan Tuan著,U.C.Berke-lev Engineering Library中的“Sugiyama算法”,和从服务器传送来的调用图信息,客户在VDT 122上构造调用图的视觉表现。使用从服务器传送来的栈信息,客户高亮度显示特定的区域以指示程序的执行路径。
上面标出的每个参考文献这里作为非重要问题的形式加以引用;在本发明的调试器中也可用其它已知的图算法代替Sugiyama算法或对该算法的Davis改进。
调试器根据图7a和7b中所示的处理步骤运行。从这些图中可看出,被调试的程序可在调试程序700的控制下启动,或由操作系统启动,操作系统随后调用调试器702。两种情况下,应用程序都被装入服务器计算机的内存110并在调试器服务器的控制下运行。然后调试器从服务器计算机的内存110或相关的盘子系统106中读取符号信息,得出各个函数706之间的调用图关系,并从服务器内存708中读取帧信息和指针信息。然后服务器通过网络128将此信息传送给调试器客户710。
根据从服务器传给客户的信息,驻留于客户计算机112中的图形接口软件使用Sugiyama算法的Davis改进,构造712,714并显示716正被调试的程序的调用图。由于帧栈信息也传送给了客户,调试器确定并在调用图上高亮度显示程序的执行路径。图6说明了调试器开始程序执行之前所表现的调用图。注意,在图中只有“MAIN”是高亮度显示的,从而表明程序已经准备执行。
用户利用鼠标120输入调试命令718。例如,图形接口软件可设计成使用“点中并拖动”和/或“点中并敲击”方法来接收命令。根据点中并拖动方法,表示不同调试命令的多个符号,例如,如图6中604处所示,可以作为调试命令工具条显示在VDT屏幕122的顶部。通过操纵鼠标120移动显示在VDT屏幕122上的光标或指示符606,直至指到调用图上要执行的调试命令位置处,用户选定一个目标及在该目标上操作的命令。然后用户按下鼠标上的键,移动鼠标120,直至指示符606指到命令工具条604上显示代表所需调试命令的图标位置处并释放键。“点中并敲击”方法类似,不同之处是鼠标120上的键是在当指示符606指到调用图上要执行的命令位置处时按下并释放。然后指示符606沿工具条604移动到所需调试命令图标所在的位置处,再次按下并释放鼠标120。用于向通用计算机输入命令的这两种方法在技术上都是众所周知的。
在这两种情况下,客户随后都向调试器传送调试命令,从而使定单处理程序根据该命令并在调试器的控制下执行。例如,参照图8,若调试命令是在Verify Order 808处的断点入口,程序将执行直至该断点。当到达断点时,调试器的服务器部分读取帧信息并将程序的当前状态传送给客户。当客户接收到此信息时,通过高亮度显示程序经过的直至Verify Order函数808断点处的执行路径而改变显示。图8给出了调试过程中在这样一个中间步骤处的图形用户接口显示。注意,通过在所显示的调用图上高亮度显示执行路径,本发明以易于理解的图形显示方式不仅给用户提供了当允许程序继续运行时程序可能走的一些可选路径,而且提供了程序已走过的执行路径。如前所述,所选变量800在遇到断点时的值也可以显示出来。
若用户从所显示的信息中找到了故障点,用户就可在源程序中修改错误,重新编译,重新链接并重启程序。不然,若未找出故障点,则用户就可输入另一个调试命令。此过程继续并且在图形显示上给出程序的相继状态(如需要,还包括所选的变量,源代码和反汇编机器码)直至所有的故障点都找到和改正并且程序以正常的方式执行。
在调试过程中,程序员可能想将他的或她的精力集中于程序的某个特定区域。通过允许调用树的中间节点“压缩”(如图6所示)或“展开”(如图8所示),本发明允许程序员隐藏或显示必要的程序细节。要允许这样一种控制,每个有子节点的节点具有一个图标键,其功能如同一个开关。当节点压缩时,不显示子功能节点。当展开时,显示子功能节点。通过允许程序员控制显示细节的级别,调试器提供了对用户必须要处理的可视复杂度进行控制的能力。
图9图示了一显示窗口900,其中显示了与Verufy Order函数908相应的源代码。可额外显示或作为替代显示反汇编机器代码(未显示)。可通过使用与上面所讨论相同的“点中并拖动”或“点中并敲击”方法发出命令来得到源码显示900(或,作为替代的反汇编机器代码显示)。在图9所说明的特定情况下,用户首先点中并敲击Veify Order节点908,然后沿着调试命令工具条在视图菜单902下的源代码视图菜单项上点中并敲击。这样,根据前面的描述将很明显,本发明提供了一种极其简便的方法来寻找并显示与函数相应的代码行,并/或发出调试命令,例如在某函数处的断点,而不必去浏览源代码以查找目标函数的第一行。
在调用图的视图中,本发明的调试者具有以两种模式显示调用图的能力,我们称这两种模式为“无环的”(图10)和“有环的”(图11)。当有迭代函数调用时,在调用图中就出现一个环。当一个函数调用其自身或另外一个在程序栈202中激活的函数时就有迭代调用存在。实质上我们得到一个循环。这两种模式,有环和无环,具有不同的优点。图10说明了以自顶向下方式表现在VDT屏幕上的调用图1000的无环表示的通常情况,其中程序的最顶部函数(main)1002处于最顶部,并且随后的子函数在窗口中向右缩进并位于窗口较低处。无环表示的优点在于它视觉清楚,这是由于调试程序在所有引用函数的地方复制函数节点因而没有相互交叉的线出现。例如,若函数MAIN调用函数B,I和J,并且B调用函数I和M,I将在无环视图中表示两次。在某些情况下这种表示的可能缺点是丢失了有多少函数调用了某个特定函数的信息。在图10的例子中,很容易看出I被MAIN和B调用,但在更复杂的调用图中将很难用肉眼提取出此信息。
图11是与图10所示相同的调用图1000的有环表示。这里,不必试图复制节点,但程序结构的表现更复杂。要显示调用图的有环表示,图以从左到右的方式布局,其中MAIN函数1002在最左边并且经过子节点的展开出现在右边。由于每个函数只有一个实例,被调试者必须显示出走进或走出该特定节点的单一表示的所有连接。
对有许多迭代调用的大程序,调用图的有环表示可能变得非常复杂。这就是本发明提供给用户选择使用这两种模式之一的原因,这使得用户能以最易理解的格式观察必要的信息。
从上面详细的描述可以看出,本发明极大地简化了调试。它对调试复杂程序特别有用,因为显示的图形特征将程序的组织以一种现有基于文本技术的调试器所不能实现的方式展现给用户。使用本发明,可以显示程序的整个调用图(或调用图中所选定的部分),从而以简明的显示提供给用户:(a)关于程序总体组织形式的信息;(b)程序的当前执行状态;(c)程序到达其当前状态所经过的执行路径;(d)程序本可能经过的替代的路径;和(e)当程序允许继续执行时程序可采用的可选的执行路径。很明显,已有基于文本的调试器不能以简明、动态的显示向用户提供这样的信息。这五项,以简明的图形格式显示在一个单一的屏幕上的信息加上通过在程序的图形表现上直接操作来输入调试命令的功能,极大地简化了调试进程。
现已描述了本发明的几种最佳实施方式。无论如何,可以理解可做出各种修改而不背离本发明的实质与范畴。例如,根据本发明的调试器可在单一的计算机上运行,而不是所推荐的客户—服务器环境。同时执行路径最好沿调用图以加粗或高亮度视频显示,其中程序函数表示为节点并且连接节点的线说明了一个函数有调用另一个函数的能力,根据本公开摘要,多种其它图形化表达程序组织形式和执行路径信息的方法对普通的技术人员将很明显。这样,本发明不仅仅受限于这里所述的最佳实施方式,而是可以变换为各种对熟练的技术人员很明显的方法。
在描述最佳实施方式时,用于实现本发明的不同方面的实施方式的几种特别技术被标出,并涉及到更多描述本发明的普通术语。然而,应该理解这种特殊性不会限制本权利要求发明的范畴。
Claims (20)
1.一种在具有计算机内存和图形显示输出设备的计算机系统中调试计算机软件程序的方法,此方法包括如下步骤:
(a)把要调试的软件程序装入计算机系统,软件程序中包含多个相互间具有调用关系的函数;
(b)将与程序有关的符号信息存入计算机系统的内存中,包括定义函数间调用关系的信息;
(c)将调试软件装入计算机系统;
(d)从有调试软件的计算机内存中读出至少一部分符号信息;
(e)使用调试软件从符号信息中得出函数间的调用树关系;以及
(f)使用调试软件在输出设备上输出图形显示以说明多个函数中至少几个函数间的调用关系。
2.权利要求1的方法,其中图形显示包含调用树图。
3.权利要求1的方法,其中图形显示包含有环调用树图。
4.权利要求1的方法,其中图形显示包含无环调用树图。
5.权利要求1的方法,进一步包括如下步骤:
(a)将调试命令输入计算机系统;
(b)在调试软件的控制下以一种与调试命令一致的方式执行软件程序;
(c)与图形显示相关联,在输出设备上输出可视化表示,以说明由调试命令结果所得的程序执行路径。
6.权利要求5的方法,其中图形显示是调用树图。
7.权利要求5的方法,其中输入调试命令的步骤包括在图形显示上移动指示符以指示在程序中将要执行命令的位置的步骤。
8.权利要求6的方法,其中在输出设备上输出可视化表示以说明程序执行路径的步骤中包括以高亮度视频显示那些在调用树图上代表已经执行了的函数的节点以及相关联的节点间的互连线的步骤。
9.一种用于调试程序的方法,包括如下步骤:
把要调试的程序的至少一部分的图形表示显示在计算机屏幕上;
将图形表示上描述已执行了的程序部分的那些部分高亮度显示;
通过将程序的图形表示上的指示符与程序中命令要执行的位置相关联来输入调试命令。
10.权利要求9的方法,其中图形表示是包含函数节点的调用图,并且调试命令在与指示符相关联的节点处展开图形表示。
11.权利要求9的方法,其中图形表示是包含函数节点的调用图,并且调试命令在与指示符相关联的节点处压缩图形表示。
12.权利要求9的方法,进一步包括如下步骤:
根据调试命令执行程序;并且
高亮度显示那些作为调试命令的结果的程序执行部分。
13.权利要求9的方法,其中调试命令在计算机屏幕上改变显示,而不会造成被调试的程序执行另外的程序步骤。
14.一种在运行于客户/服务器环境中的软件程序中寻找并改正错误的方法,客户/服务器环境中包含一个客户计算机和一个服务器计算机,其中图形显示设备运行中连接到客户计算机,此方法包括如下步骤:
(a)将软件程序装入服务器计算机中,软件程序中包含多行代码并在其中一行中有一个疏忽造成的错误;
(b)将调试命令从客户计算机传送到服务器计算机;
(c)在服务器计算机中执行调试命令;
(d)将定义程序根据调试命令所走过的执行路径的信息从服务器计算机传送给客户计算机;
(e)在图形显示设备上显示至少一部分软件程序的图形表示,包括作为调试命令结果的程序的执行路径指示。
15.权利要求14的方法,其中显示包括软件程序调用树图。
16.权利要求14的方法,进一步包括如下步骤:
在传送调试命令之前,将调试命令输入客户计算机,其中输入调试命令的步骤包括移动指示符在图形显示上指示在程序中要执行命令的位置的步骤。
17.一种便于调试包含多个有调用关系的函数的软件程序的计算机系统,包括:
(a)用于执行程序的计算装置,包括用于存储定义程序当前执行状态的信息的第一存储装置;
(b)第二存储装置,与计算装置运行中相连,用于存储定义函数间调用关系的符号信息;
(c)读装置,用于读取至少一部分符号信息和状态信息并用于从其中得出至少一些函数间的调用关系;
(d)通讯装置,用于传送调用关系信息;和
(e)图形显示装置,与通讯装置运行中相连,用于接收调用信息并基于调用关系信息生成程序执行路径的图形表示。
18.权利要求17的计算机系统,其中图形显示装置包含图形用户接口以接收用户调试命令并将命令传送给计算装置。
19.权利要求17的计算机系统,其中图形表示是调用树图。
20.权利要求18的计算机系统,进一步包括用于在图形显示装置上生成可移动指示符图象的装置,其中用户接口包含使用程序图形表示的相对位置和可移动指示符来定义调试命令的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26935594A | 1994-06-30 | 1994-06-30 | |
US269,355 | 1994-06-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1118473A true CN1118473A (zh) | 1996-03-13 |
Family
ID=23026900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN95108183A Pending CN1118473A (zh) | 1994-06-30 | 1995-06-29 | 计算机程序中错误的诊断和改正工具及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6003143A (zh) |
EP (1) | EP0690378A1 (zh) |
JP (1) | JPH0883197A (zh) |
CN (1) | CN1118473A (zh) |
CA (1) | CA2153075A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007121658A1 (fr) * | 2006-04-24 | 2007-11-01 | Huawei Technologies Co., Ltd. | Procédé de débogage et appareil pour effectuer un développement de services de classe télécoms guidé par modèle |
CN100412802C (zh) * | 2003-05-07 | 2008-08-20 | 微软公司 | 有计划的计算机问题诊断和解决及其自动报告和更新 |
CN101968767A (zh) * | 2010-10-15 | 2011-02-09 | 北京数码大方科技有限公司 | 基于宏程序的代码调试及仿真的方法和装置 |
CN101088070B (zh) * | 2004-12-31 | 2011-07-27 | 英特尔公司 | 远程记录机制的方法与系统 |
CN101360007B (zh) * | 2007-07-30 | 2011-10-05 | 辉达公司 | 用于远程图形装置的分析和性能调整的客户端服务器系统 |
CN108875289A (zh) * | 2017-05-08 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种算法调试方法、客户端、后台服务器及系统 |
CN111736839A (zh) * | 2019-03-25 | 2020-10-02 | 华为技术有限公司 | 一种编译链接方法及装置 |
Families Citing this family (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
JP2795244B2 (ja) * | 1996-01-17 | 1998-09-10 | 日本電気株式会社 | プログラムデバッグシステム |
US6513154B1 (en) | 1996-10-21 | 2003-01-28 | John R. Porterfield | System and method for testing of computer programs in programming effort |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
EP1329816B1 (de) | 1996-12-27 | 2011-06-22 | Richter, Thomas | Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US6282701B1 (en) * | 1997-07-31 | 2001-08-28 | Mutek Solutions, Ltd. | System and method for monitoring and analyzing the execution of computer programs |
WO1999012094A1 (de) * | 1997-09-01 | 1999-03-11 | Siemens Nixdorf Informationssysteme Ag | Verfahren zum umsetzen eines objektcodes in einen programmcode |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6144954A (en) * | 1998-01-27 | 2000-11-07 | Li; Chou H. | Automatic development of computer software |
DE69908446T2 (de) * | 1998-02-27 | 2004-05-06 | Hitachi, Ltd. | Programmfehlerbeseitigung |
US6418543B1 (en) * | 1998-07-14 | 2002-07-09 | Cisco Technology, Inc. | Apparatus and method for debugging source code |
DE19834426A1 (de) * | 1998-07-30 | 2000-02-03 | Siemens Ag | Schaltungsanordnung und Verfahren zum Erstellen von Anreizen |
US6295638B1 (en) * | 1998-07-30 | 2001-09-25 | International Business Machines Corporation | Method and apparatus for loading native object code in data processing system |
US6219804B1 (en) | 1998-08-05 | 2001-04-17 | International Business Machines Corporation | Debugging client server programs from third party workstations |
US6223307B1 (en) | 1998-08-05 | 2001-04-24 | International Business Machines Corporation | Debugging client server programs from third party workstations |
US6202175B1 (en) | 1998-08-05 | 2001-03-13 | International Business Machines Corporation | Debuggin client server programs from third party workstations |
US6633912B1 (en) | 1998-10-12 | 2003-10-14 | Freshwater Software, Inc. | System, method and apparatus for providing an enterprise portal |
US7047277B1 (en) | 1998-10-12 | 2006-05-16 | Mercury Interactive Corporation | System and computer-implemented method for creating configuration files for web transaction tests |
US6138157A (en) * | 1998-10-12 | 2000-10-24 | Freshwater Software, Inc. | Method and apparatus for testing web sites |
US6631411B1 (en) | 1998-10-12 | 2003-10-07 | Freshwater Software, Inc. | Apparatus and method for monitoring a chain of electronic transactions |
WO2000029950A1 (en) * | 1998-11-13 | 2000-05-25 | Channelpoint, Inc. | System, method and computer program product for dynamically generating a graphical user interface from computer program specifications |
US6542880B2 (en) * | 1998-12-22 | 2003-04-01 | Indeliq, Inc. | System, method and article of manufacture for a goal based system utilizing a table based architecture |
US6782374B2 (en) * | 1998-12-22 | 2004-08-24 | Accenture Global Services Gmbh | System, method and article of manufacturing for a runtime program analysis tool for a simulation engine |
US6567933B1 (en) * | 1999-02-19 | 2003-05-20 | Texas Instruments Incorporated | Emulation suspension mode with stop mode extension |
US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
JP3641391B2 (ja) | 1999-06-17 | 2005-04-20 | 日本電気株式会社 | 情報視覚化システム、空間映像生成装置、空間映像再生装置、情報視覚化方法 |
US6671825B1 (en) * | 1999-11-19 | 2003-12-30 | Oracle International Corporation | Method and apparatus for debugging a software program |
US6839894B1 (en) | 1999-11-19 | 2005-01-04 | Oracle International Corporation | Method and apparatus for debugging a software program using dynamic debug patches and copy on write views |
US7058928B2 (en) | 1999-12-23 | 2006-06-06 | Identify Software Ltd. | System and method for conditional tracing of computer programs |
GB2358492B (en) * | 2000-01-18 | 2004-07-07 | Mitel Semiconductor Ltd | Software debugging |
US20020087949A1 (en) * | 2000-03-03 | 2002-07-04 | Valery Golender | System and method for software diagnostics using a combination of visual and dynamic tracing |
JP2004506261A (ja) | 2000-06-13 | 2004-02-26 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | パイプラインctプロトコルおよびct通信 |
AU2001280763A1 (en) * | 2000-07-28 | 2002-02-13 | Freshwater Software, Inc. | A method, system and apparatus for providing monitoring of electronic transactions |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6871213B1 (en) | 2000-10-11 | 2005-03-22 | Kana Software, Inc. | System and method for web co-navigation with dynamic content including incorporation of business rule into web document |
US6823518B1 (en) * | 2000-10-17 | 2004-11-23 | Microsoft Corporation | Threading and communication architecture for a graphical user interface |
US8145742B1 (en) | 2000-10-31 | 2012-03-27 | Red Hat, Inc. | Method of and apparatus for network administration |
US6950868B1 (en) | 2000-10-31 | 2005-09-27 | Red Hat, Inc. | Method of and apparatus for remote monitoring |
US8312435B2 (en) * | 2000-12-26 | 2012-11-13 | Identify Software Ltd. (IL) | System and method for conditional tracing of computer programs |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US20040205720A1 (en) * | 2001-04-30 | 2004-10-14 | Robert Hundt | Augmenting debuggers |
AU2002312210A1 (en) * | 2001-06-04 | 2002-12-16 | Sentiat Technologies, Inc. | System and process for constructing and analyzing profiles for an application |
US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
US7013457B2 (en) * | 2001-07-26 | 2006-03-14 | Springsoft, Inc. | Prioritized debugging of an error space in program code |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US7152226B2 (en) * | 2001-09-04 | 2006-12-19 | James Pangburn | Flexible horizontal stack display and editor |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US6996806B2 (en) * | 2001-09-21 | 2006-02-07 | International Business Machines Corporation | Graphical view of program structure during debugging session |
US8281108B2 (en) | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
EP1514193B1 (de) | 2002-02-18 | 2008-07-23 | PACT XPP Technologies AG | Bussysteme und rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US7451206B2 (en) * | 2002-05-20 | 2008-11-11 | Siemens Communications, Inc. | Send of software tracer messages via IP from several sources to be stored by a remote server |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US8020148B2 (en) * | 2002-09-23 | 2011-09-13 | Telefonaktiebolaget L M Ericsson (Publ) | Bi-directional probing and testing of software |
US7386839B1 (en) | 2002-11-06 | 2008-06-10 | Valery Golender | System and method for troubleshooting software configuration problems using application tracing |
US20040098703A1 (en) * | 2002-11-15 | 2004-05-20 | Kondur Sankar Narayana | Integration of multiple software tools under a single site |
US8032866B1 (en) | 2003-03-27 | 2011-10-04 | Identify Software Ltd. | System and method for troubleshooting runtime software problems using application learning |
US20050021425A1 (en) * | 2003-05-16 | 2005-01-27 | Liam Casey | Method and system for supply chain management employing a visualization interface |
JP4700611B2 (ja) | 2003-08-28 | 2011-06-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データ処理装置およびデータ処理方法 |
US7409602B2 (en) * | 2003-11-12 | 2008-08-05 | Lsi Corporation | Methodology for debugging RTL simulations of processor based system on chip |
US8266595B2 (en) * | 2004-02-12 | 2012-09-11 | International Business Machines Corporation | Removal of asynchronous events in complex application performance analysis |
US7496900B2 (en) * | 2004-02-12 | 2009-02-24 | International Business Machines Corporation | Method for automatic detection of build regressions |
US7272450B2 (en) * | 2004-03-31 | 2007-09-18 | Omron Corporation | Development aid device |
US7827539B1 (en) | 2004-06-25 | 2010-11-02 | Identify Software Ltd. | System and method for automated tuning of program execution tracing |
US7882492B2 (en) | 2004-09-17 | 2011-02-01 | Oracle America, Inc. | Intelligent computer program debugger, and system and method for implementing the same |
US7496801B2 (en) * | 2005-06-27 | 2009-02-24 | Intel Corporation | Method, apparatus and system for facilitating debug for link interconnects |
US7472355B2 (en) * | 2005-06-30 | 2008-12-30 | International Business Machines Corporation | Computer-implemented method for managing commands for a terminal session |
US7730246B2 (en) * | 2005-06-30 | 2010-06-01 | Intel Corporation | Opportunistic transmission of software state information within a link based computing system |
US7844854B2 (en) * | 2005-06-30 | 2010-11-30 | Intel Corporation | Opportunistic transmission of computing system state information within a link based computing system |
EP1974265A1 (de) | 2006-01-18 | 2008-10-01 | PACT XPP Technologies AG | Hardwaredefinitionsverfahren |
US7788543B2 (en) * | 2006-03-22 | 2010-08-31 | Cisco Technology, Inc. | Methods and systems for generating and storing computer program execution trace data |
US7693257B2 (en) * | 2006-06-29 | 2010-04-06 | Accuray Incorporated | Treatment delivery optimization |
US20080016062A1 (en) * | 2006-06-30 | 2008-01-17 | Drescher Keith A | Request-response trigger generation in link-connected computing systems |
US7979839B2 (en) * | 2006-08-23 | 2011-07-12 | Wolf William M | Method for employing the computer in the creative act of programming |
US8104022B2 (en) * | 2006-11-06 | 2012-01-24 | International Business Machines Corporation | Automated method for historical analysis of a memory state |
EP2003563A1 (de) * | 2007-05-24 | 2008-12-17 | Siemens Aktiengesellschaft | Verfahren zur Fenlersuche bei einem Automatisierungsgerätes |
US8245212B2 (en) * | 2008-02-22 | 2012-08-14 | Microsoft Corporation | Building call tree branches and utilizing break points |
JP2009205472A (ja) * | 2008-02-28 | 2009-09-10 | Nec Corp | ログ出力システム、ログ出力方法、およびログ出力プログラム |
US9098626B2 (en) * | 2008-04-01 | 2015-08-04 | Oracle International Corporation | Method and system for log file processing and generating a graphical user interface based thereon |
US9823903B2 (en) * | 2008-07-18 | 2017-11-21 | Oracle International Corporation | Debugging software through visual representations mapped to computer code |
US8762952B2 (en) | 2010-12-14 | 2014-06-24 | Bmc Software, Inc. | Recording method calls that led to an unforeseen problem |
US8745598B2 (en) | 2010-12-14 | 2014-06-03 | Bmc Software, Inc. | Running injected code prior to execution of an application |
JP5653250B2 (ja) * | 2011-02-21 | 2015-01-14 | 中国電力株式会社 | データ分析支援装置、データ分析支援方法及びプログラム |
US8438427B2 (en) * | 2011-04-08 | 2013-05-07 | Ca, Inc. | Visualizing relationships between a transaction trace graph and a map of logical subsystems |
CN102411534B (zh) * | 2011-07-25 | 2014-12-31 | 中国科学院声学研究所 | 一种断点调试方法和断点调试装置 |
US9298586B2 (en) | 2011-10-11 | 2016-03-29 | Apple Inc. | Suspending and resuming a graphics application executing on a target device for debugging |
CN102421004B (zh) * | 2011-11-01 | 2014-09-03 | 深圳创维-Rgb电子有限公司 | 电视机软件系统的调试方法及装置 |
CN102662821B (zh) | 2012-03-22 | 2015-03-11 | 华为技术有限公司 | 虚拟机故障的辅助诊断方法、装置和系统 |
US8909990B2 (en) | 2012-08-04 | 2014-12-09 | Microsoft Corporation | Historical software diagnostics using lightweight process snapshots |
US9129063B2 (en) * | 2013-05-14 | 2015-09-08 | Oracle International Corporation | Visualizing a computer program execution history |
US9734040B2 (en) | 2013-05-21 | 2017-08-15 | Microsoft Technology Licensing, Llc | Animated highlights in a graph representing an application |
US20140189650A1 (en) * | 2013-05-21 | 2014-07-03 | Concurix Corporation | Setting Breakpoints Using an Interactive Graph Representing an Application |
US8990777B2 (en) | 2013-05-21 | 2015-03-24 | Concurix Corporation | Interactive graph for navigating and monitoring execution of application code |
US9280841B2 (en) | 2013-07-24 | 2016-03-08 | Microsoft Technology Licensing, Llc | Event chain visualization of performance data |
US9292415B2 (en) | 2013-09-04 | 2016-03-22 | Microsoft Technology Licensing, Llc | Module specific tracing in a shared module environment |
US10346292B2 (en) | 2013-11-13 | 2019-07-09 | Microsoft Technology Licensing, Llc | Software component recommendation based on multiple trace runs |
US10289411B2 (en) | 2013-11-18 | 2019-05-14 | Microsoft Technology Licensing, Llc | Diagnosing production applications |
US9632915B2 (en) * | 2014-10-29 | 2017-04-25 | Microsoft Technology Licensing, Llc. | Historical control flow visualization in production diagnostics |
JP2017539031A (ja) * | 2014-12-09 | 2017-12-28 | エントイット ソフトウェア エルエルシーEntit Software Llc | テスト実行からのテスト検証の分離 |
US20160357519A1 (en) * | 2015-06-05 | 2016-12-08 | Microsoft Technology Licensing, Llc | Natural Language Engine for Coding and Debugging |
US10496512B2 (en) * | 2016-05-11 | 2019-12-03 | Micro Focus Llc | Visualization of error flows associated with errors of different types in instances of application transactions |
US10353802B2 (en) * | 2016-11-04 | 2019-07-16 | International Business Machines Corporation | Debugging a live streaming application |
US10282274B2 (en) * | 2017-06-14 | 2019-05-07 | Microsoft Technology Licensing, Llc | Presenting differences between code entity invocations |
JP6906677B2 (ja) * | 2018-02-15 | 2021-07-21 | 三菱電機株式会社 | ソフトウェア可視化装置、ソフトウェア可視化方法およびソフトウェア可視化プログラム |
GB201808519D0 (en) | 2018-05-24 | 2018-07-11 | Undo Ltd | Debugging Systems |
US11947966B2 (en) | 2021-10-11 | 2024-04-02 | International Business Machines Corporation | Identifying computer instructions enclosed by macros and conflicting macros at build time |
US11481200B1 (en) | 2021-10-11 | 2022-10-25 | International Business Machines Corporation | Checking source code validity at time of code update |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4595981A (en) * | 1984-03-05 | 1986-06-17 | At&T Bell Laboratories | Method of testing interfaces between computer program modules |
JPH02272645A (ja) * | 1989-04-14 | 1990-11-07 | Hitachi Ltd | プログラム・デバツグ支援方法 |
US5124989A (en) * | 1990-01-08 | 1992-06-23 | Microsoft Corporation | Method of debugging a computer program |
US5313616A (en) * | 1990-09-18 | 1994-05-17 | 88Open Consortium, Ltd. | Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines |
JPH04337843A (ja) * | 1991-05-15 | 1992-11-25 | Hitachi Ltd | プログラム動作表示方法 |
US5410648A (en) * | 1991-08-30 | 1995-04-25 | International Business Machines Corporation | Debugging system wherein multiple code views are simultaneously managed |
US5297150A (en) * | 1992-06-17 | 1994-03-22 | International Business Machines Corporation | Rule-based method for testing of programming segments |
-
1995
- 1995-06-28 EP EP95110074A patent/EP0690378A1/en not_active Withdrawn
- 1995-06-29 CN CN95108183A patent/CN1118473A/zh active Pending
- 1995-06-30 CA CA002153075A patent/CA2153075A1/en not_active Abandoned
- 1995-06-30 JP JP7187804A patent/JPH0883197A/ja active Pending
-
1997
- 1997-02-28 US US08/807,347 patent/US6003143A/en not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100412802C (zh) * | 2003-05-07 | 2008-08-20 | 微软公司 | 有计划的计算机问题诊断和解决及其自动报告和更新 |
CN101088070B (zh) * | 2004-12-31 | 2011-07-27 | 英特尔公司 | 远程记录机制的方法与系统 |
US8806435B2 (en) | 2004-12-31 | 2014-08-12 | Intel Corporation | Remote logging mechanism |
WO2007121658A1 (fr) * | 2006-04-24 | 2007-11-01 | Huawei Technologies Co., Ltd. | Procédé de débogage et appareil pour effectuer un développement de services de classe télécoms guidé par modèle |
CN101360007B (zh) * | 2007-07-30 | 2011-10-05 | 辉达公司 | 用于远程图形装置的分析和性能调整的客户端服务器系统 |
CN101968767A (zh) * | 2010-10-15 | 2011-02-09 | 北京数码大方科技有限公司 | 基于宏程序的代码调试及仿真的方法和装置 |
CN108875289A (zh) * | 2017-05-08 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种算法调试方法、客户端、后台服务器及系统 |
CN111736839A (zh) * | 2019-03-25 | 2020-10-02 | 华为技术有限公司 | 一种编译链接方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP0690378A1 (en) | 1996-01-03 |
JPH0883197A (ja) | 1996-03-26 |
CA2153075A1 (en) | 1995-12-31 |
US6003143A (en) | 1999-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1118473A (zh) | 计算机程序中错误的诊断和改正工具及方法 | |
US6016474A (en) | Tool and method for diagnosing and correcting errors in a computer program | |
US4742467A (en) | Automated programming system for machine creation of applications program source code from non-procedural terminal input | |
Jerding et al. | Visualizing interactions in program executions | |
CN100492316C (zh) | 测试自动化的系统和方法 | |
US8448067B2 (en) | Graphics command management tool and methods for analyzing performance for command changes before application modification | |
JP5450443B2 (ja) | 複数のコンポーネントを具備するシステムの故障モード影響解析を支援する、コンピュータで実施される方法、コンピュータプログラム製品及び装置 | |
CN103597469A (zh) | 集成开发环境中的实况浏览器工具 | |
US8078992B2 (en) | Rendering a customized list of controls | |
CN102696026B (zh) | 一种用于创建数据结构的系统和方法 | |
EP2348401A1 (en) | Transformation of hierarchical data formats using graphical rules | |
Tateosian | Python For ArcGIS | |
US20110161917A1 (en) | Processing collections of data items | |
CN113326314A (zh) | 数据可视化方法、装置、电子设备及可读存储介质 | |
Jiang et al. | Log-it: Supporting Programming with Interactive, Contextual, Structured, and Visual Logs | |
US20210271471A1 (en) | Code reading supporting device, code reading supporting method, and storage medium | |
JP7055064B2 (ja) | データベースマイグレーション支援システム及びプログラム | |
CN114385167A (zh) | 前端页面生成方法、装置、设备及介质 | |
JP4136594B2 (ja) | データ処理方法およびデータ処理プログラム | |
CN111949312A (zh) | 数据模块的打包方法、装置、计算机设备和存储介质 | |
CN114968751A (zh) | 一种无代码开发平台的程序调试方法和程序调试装置 | |
US20140089741A1 (en) | Data transition tracing apparatus, data transition tracing method and storage medium storing data transition tracing program | |
WO1985005204A1 (en) | Automated application program development system and method | |
JP6790199B2 (ja) | コードリーディング支援装置、及び、コードリーディング支援方法、並びに、コードリーディング支援プログラム | |
JP6983976B2 (ja) | コードリーディング支援装置、及び、コードリーディング支援方法、並びに、コードリーディング支援プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C01 | Deemed withdrawal of patent application (patent law 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |