CN100538656C - 在分布式调试器中调试计算机程序的方法和装置 - Google Patents
在分布式调试器中调试计算机程序的方法和装置 Download PDFInfo
- Publication number
- CN100538656C CN100538656C CNB200610143711XA CN200610143711A CN100538656C CN 100538656 C CN100538656 C CN 100538656C CN B200610143711X A CNB200610143711X A CN B200610143711XA CN 200610143711 A CN200610143711 A CN 200610143711A CN 100538656 C CN100538656 C CN 100538656C
- Authority
- CN
- China
- Prior art keywords
- execution environment
- long
- debugger
- range execution
- computer program
- 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.)
- Expired - Fee Related
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/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了用于在分布式调试器中调试计算机程序的方法、装置、和计算机程序产品,其包括定义以远程执行环境的一个或多个属性为条件的条件断点;在远程执行环境中在调试会话中调试计算机程序;以及在以远程执行环境的一个或多个属性为条件的断点处检索调试信息。
Description
技术领域
本发明的领域是数据处理,或尤其是用于在分布式调试器中调试计算机程序的方法、系统、和产品。
背景技术
1948年的EDVAC计算机系统的开发经常被称作计算机时代的开端。从那以后,计算机系统已经发展成非常复杂的设备。现今的计算机比早先的诸如EDVAC的系统更加复杂得多。计算机系统典型地包括组合的硬件和软件部件、应用程序、操作系统、处理器、总线、存储器、输入/输出设备等。随着半导体处理和计算机体系结构上的发展推动计算机的性能越来越高,已经发展了更复杂的计算机软件以利用硬件的更高性能,从而导致现今的计算机系统比仅仅几年前更强大得多。
随着计算机软件已变得更加复杂,用于分析软件缺陷或优化性能的称为“调试器”的计算机程序也已经发展。调试器允许用户通过控制正被调试的程序的执行跟随程序执行的流程并检查程序在任何一点的状态。调试器典型地允许用户跟踪程序变量,逐步地运行程序,在计算机程序代码中的特定的行号处停止程序执行,或当某些条件满足时停止程序执行。
一些调试器提供给用户更加复杂的称为分布式调试的功能。分布式调试器提供从另一个计算机系统调试运行在一个计算机系统上的计算机程序的能力。当使用分布式调试器时,正被调试的计算机程序代码典型地可以运行在若干不同的计算机系统上,其中每个系统可有不同的计算机资源的配置。可利用的配置和资源的多样性增加了调试计算机程序的难度。例如,计算机程序可在NetBSD操作系统上很好地运行,而在LinuxTM操作系统上运行时则一贯地产生错误。程序可在处理器的一个版本上很好地运行,而在同一处理器的稍后版本上运行时则产生错误。程序可在网格环境的一个节点上很好地运行,而在同一网格环境的另一个节点上运行时则产生错误。
在测试实验室中再现在多个远程执行环境中产生的程序错误以试图调试计算机程序一般不可行。为了再现用于调试计算机程序的执行环境,用户将需要重新创建计算机程序可能在其中运行的每种类型的执行环境,且用户经常不能预期计算机程序将在其中运行的执行环境的类型。此外,即使测试实验室能复制所有的平台、操作系统、和正被调试的程序一般可能在任何时候在其中运行的执行环境,在当前的技术水平上测试者仍没有办法基于各种执行环境的属性来检测错误。
发明内容
公开了用于在分布式调试器中调试计算机程序的方法、装置、和计算机程序产品,其包括定义以远程执行环境的一个或多个属性为条件的条件断点,在该远程执行环境中在调试会话中调试该计算机程序,以及在以该远程执行环境的一个或多个属性为条件的断点处检索调试信息。
通过以下对附图所示的本发明的示例性实施例的更具体的描述,本发明的上述和其他目标、特征和优点将显而易见,附图中相同的标号一般表示本发明的示例性实施例的相同部分。
附图说明
图1给出的网络图示出了根据本发明的实施例的用于在分布式调试器中调试计算机程序的系统。
图2给出了根据本发明的实施例的用于在分布式调试器中调试计算机程序的示例性系统的框图。
图3给出了根据本发明的实施例的包括可用于在分布式调试器中调试计算机程序的示例性计算机的自动计算机器的框图。
图4给出了根据本发明的实施例的用于在分布式调试器中调试计算机程序的分布式调试器的示例性调试器客户GUI的线条图。
图5给出的流程图示出了根据本发明的实施例的用于在分布式调试器中调试计算机程序的示例性方法。
图6给出了根据本发明的实施例的支持在分布式调试器中调试计算机程序的示例性数据结构的线条图。
具体实施方式
参照从图1开始的附图,描述了根据本发明的实施例的用于在分布式调试器中调试计算机程序的示例性方法、系统、和产品。图1给出的网络图示出了根据本发明的实施例的用于在分布式调试器中调试计算机程序的示例性系统。图1的系统一般操作以根据本发明的实施例通过定义以远程执行环境的一个或多个属性为条件的条件断点、在远程执行环境中在一调试调试会话中调试程序、以及在以远程执行环境的一个或多个属性为条件的条件断点处检索调试信息,来在分布式调试器中调试计算机程序。
分布式调试器是允许在从另一个计算机系统控制调试会话的同时分析运行在一个计算机系统上的计算机程序的软件缺陷或优化其性能的客户/服务器应用。分布式调试器通过控制计算机程序由计算机处理器的执行帮助分析软件缺陷和优化性能。可被改进以根据本发明的实施例操作的分布式调试器的示例包括IBM分布式调试器、Allinea软件的分布式调试工具、LynuxWorksTM TotalView、或本领域中那些技术人员可想到的任何其他的分布式调试器。
调试器服务器是根据来自调试器客户的通信控制计算机处理器对计算机程序的执行的计算机程序。调试器服务器与调试中的计算机程序运行在同一计算机系统上。在本说明书中,调试服务器有时被称为“调试器引擎”。
调试器客户是提供用于操作调试引擎的用户界面的计算机程序。例如,调试器客户可以提供用于操作调试引擎以设置断点、单步调试计算机程序代码、和检查变量的内容的用户界面。调试器客户可允许使用多个调试会话同时调试多个计算机程序。调试会话是通过调试器客户和一个或多个调试器引擎之间的连接实现的,其涉及在用于计算机程序的分布式调试的该连接的建立、维护、和释放期间的数据交换。
远程执行环境是一个或多个计算机系统,每个计算机系统能够运行分布式调试器的调试器引擎来控制计算机程序的执行。远程执行环境的调试器引擎根据调试器客户的请求操作。调试器客户典型地通过网络远离远程执行环境,且正是在这种意义下远程执行环境是“远程的”。远程执行环境可被实现为例如运行远程连接到调试器客户的调试器引擎的单个计算机服务器,被实现为作为一群集服务器被管理且每个服务器运行远程连接到调试器客户的调试器引擎的几个服务器,被实现为其中网格的一个或多个节点运行远程连接到调试器客户的调试器引擎的网格计算环境,以及在对本领域中的那些技术人员可想到的其他体系结构中实现。
图1的系统包括通过有线连接(100、102、105、111)连接到网络(101)的服务器(106、107、109和117)。服务器(106、107、109和117)实现具有通过网络(101)提供的数据通信的网格计算环境(125)。网格计算环境是一组为特定的用户目的提供多个系统的资源的能力给单个用户点的计算机系统。全球网格论坛(“GGF”)是用于网格计算的主要的标准组织。GGF是工业和学术之间的并得到两者的重要支持的协作。网格计算供应管理上远程的计算机资源给计算任务。网格技术的焦点与超出本地(主)管理域之外即在远程执行环境中灵活的计算供应的问题和需求相关。网格计算环境对用户来说看起来是单个虚拟计算系统。网格计算环境协调并提供给用户计算、应用、数据、存储、或网络资源。这些资源是可升级的、动态的、并地理上分布在不同类的计算机系统中。
断点是被插入到计算机程序的可执行的计算机机器代码中的特殊的指令,该指令停止处理器对计算机机器代码的执行并通过操作系统将处理器控制返回给调试器引擎。被用作断点的特殊的指令由计算机处理器的体系结构定义并可包括,例如,被插入到计算机程序的计算机机器代码中的非法操作码或专用断点指令。
调试器引擎可将断点直接插入到计算机机器代码中以执行该调试器引擎自己的程序操作。被直接插入到计算机机器代码中以执行调试器引擎自己的程序操作的断点在本说明书中被称为“内部断点”。例如,调试器引擎可将内部断点直接插在一行计算机程序代码后以执行单行计算机程序代码。被调试器引擎插入的执行该调试器引擎自己的程序操作的内部断点一般对通过调试器客户的分布式调试器的用户不可见。
除被调试器引擎插入以执行该调试器引擎自己的程序操作的内部断点之外,用户可通过调试器客户的用户界面将断点插入到计算机程序代码中。被用户通过调试器客户的用户界面插入的断点在本说明书中被称为“用户断点”。用户断点的目的是将调试器的用户界面的控制返回给用户以便该用户能查看在正被调试的程序的执行中的特定点处寄存器的内容、存储器变量等。因此用户断点的效果一般对用户可见。
条件断点是一种使得调试器引擎根据相关条件的求值通过调试器客户通知用户遇到用户断点的用户断点。条件是当条件断点使得处理器控制返回给调试器引擎时由分布式调试器求值的表达式。例如,当发生例如以下情况时,条件断点可使得调试器引擎暂停正被调试的程序的执行并通知用户遇到条件断点:
·一寄存器包含某值且正被调试的程序的远程执行环境包括LinuxTM操作系统;
·一存储器变量包含某值且正被调试的程序的远程执行环境包括Pentium MTM处理器;或
·一寄存器包含某值,一存储器变量包含某个值,且正被调试的程序的远程执行环境包括某个网格节点标识码。
计算机机器代码是可由计算机处理器直接执行的数字代码的系统。例如,一计算机机器代码可命令计算机处理器存储第一寄存器和第二寄存器的和到该第一寄存器。计算机机器代码依赖计算机处理器,因此计算机机器代码从一个计算机处理器到另一个计算机处理器变化。
计算机机器代码典型地是从计算机程序代码中产生的。计算机程序代码是一系列以某种人类可读的诸如Java、C++、Visual Basic、SQL、Fortran、或汇编语言的计算机编程语言中编写的语句。计算机程序代码典型地被组织成行,每行包含一条或多条语句。计算机程序代码被编译器为特定的计算机处理器、或被汇编语言的汇编程序为特定的计算机处理器、或动态地(on the fly)在解释器的帮助下从人类可读形式转换成计算机机器代码。在本说明书中,计算机机器代码和计算机程序代码,无论它们是单独的或组合中的,都被称为“计算机程序指令”。
图1的系统也包括下面的设备:
·通过有线连接(113)被连接到网络(103)的用于数据通信的服务器(115);
·通过有线连接(120)被连接到网络(103)的用于数据通信的个人计算机(108);
·通过无线连接(114)被连接到网络(103)的用于数据通信的个人数字助理(PDA)(112);
·通过无线连接(118)被连接到网络(103)的用于数据通信的膝上型计算机(126);
·通过无线连接(123)被连接到网络(103)的用于数据通信的汽车(124);
·通过无线连接(116)被连接到网络(103)的用于数据通信的网络使能的移动电话(110);和
·通过有线连接(122)被连接到网络(103)的用于数据通信的计算机工作站(104)。
图1系统中的每个设备可支持分布式调试器,其具有相对于调试器客户在远程执行环境中操作的调试器引擎。此外,图1系统中的每个设备可支持分布式调试器的调试器客户,尽管其中某些设备不被优选作为客户。例如,汽车(124)或许不包含可一般性编程的客户计算机,以致汽车(124)实际上可能不方便支持调试器客户,尽管汽车(124)中的诸如燃料注射控制器或定时序列控制器的嵌入系统可有用地支持分布式调试器的调试器引擎。PDA(112)和移动电话(110)可具有或许太小而不支持某些调试器客户的GUI命令的显示屏,尽管PDA(112)和移动电话(110)可有用地支持分布式调试器的调试器引擎。
但是,图1的系统确实以许多方式支持分布式调试,其中调试器客户通过远程执行环境中的调试器引擎调试程序。分布式调试器可被这样实现,其中例如个人计算机(108)中的调试器客户通过工作站(104)上的远程执行环境中的调试器引擎调试程序。分布式调试器可被这样实现,其中膝上型计算机(126)中的调试器客户通过服务器(115)上的远程执行环境中的调试器引擎调试程序。分布式调试器可被这样实现,其中工作站(104)中的调试器客户通过网格(125)中的远程执行环境中的一些调试器引擎调试程序。且在像图1中所示的示例性系统中,分布式调试器可被这样实现,其中调试器客户以对本领域中那些技术人员来说可想到的其他方式通过远程执行环境中的调试器引擎调试程序。
在图1的系统中,网络(101)和网络(103)通过网络连接(119)互连,形成较大的广域网或‘WAN’。网络(101)可以是局域网(‘LAN’),比如,作为例子,支持企业网格计算环境的企业LAN。或网络(101)可以是WAN,比如,作为例子,通过诸如IBM UDDI商业注册库的UDDI(通用描述发现和集成)注册库提供作为公共可用的暴露给万维网的Web服务的网格计算资源的因特网。网络(103)可以是通过路由器、网关、或防火墙被连接到网络(101)的企业LAN。或网络(101、103)可以都是通过路由器相连的互联网的子网。这些网络是用于提供在整个数据处理系统内连接在一起的各种设备和计算机之间的数据通信连接的媒介。图1的体系结构的网络连接方面仅是用作说明,而不是对本发明的限制。实际上,用于在分布式调试器中调试计算机程序的系统可被连接为局域网、广域网、内联网、互联网、因特网、web、万维网本身、或本领域的技术人员可想到的其他连接。
组成图1中所示的示例性系统的服务器和其他设备的安排用于说明,而不是用于限制。根据本发明的各种实施例的有用的数据处理系统可包括图1中未示出的、本领域中的技术人员可想到的额外的服务器、路由器、其他设备、和对等的体系结构。在这样的数据处理系统中的网络可支持许多数据通信协议,包括例如TCP(传输控制协议)、IP(因特网协议)、HTTP(超文本传输协议)、WAP(无线访问协议)、HDTP(手持设备传输协议)、和本领域中的技术人员可想到的其他协议。本发明的各种实施例可在除了图1中所示的那些之外的各种硬件平台上被实现。
为进一步说明,图2给出根据本发明的实施例的用于在分布式调试器中调试计算机程序的示例性系统的框图。图2的框图包括调试器客户安装(240)。调试器客户安装(240)是包含调试器客户(202)和数据通信模块(222)的计算机系统。在图2的示例中,调试器客户安装(240)可被实现为连接到因特网的具有显示屏、键盘、和鼠标的计算机工作站。
在图2的框图中,调试器客户(202)是一组为用户(204)提供用户界面以便操作调试器引擎(216和236)的计算机程序指令。用户(204)可通过例如操作键盘或操作图形用户界面的按钮来操作调试器客户(202)。调试器客户(202)通过数据通信模块(222)与调试器引擎(216和236)通信,且调试器客户(202)通过由数据通信模块(222)提供的数据通信API的函数调用与数据通信模块(222)通信。
在图2的框图中,数据通信模块(222)是一组通过数据通信API提供给调试器客户(202)数据通信连接的一个末端的计算机程序指令。在TCP用语中,数据通信连接的末端是称为“套接字”的数据结构。两个套接字形成一数据通信连接,且每个套接字包括用于各自的数据连接末端的端口号和网络地址。通过与数据通信模块(212和232)的数据通信连接(201),数据通信模块(222)提供给调试器客户(202)与调试器引擎(216和236)通信的能力而不考虑数据如何通过网络连接(201)传输。数据通信连接(201)可使用比如举例来说TCP和IP的数据通信协议实现。
图2的框图包括远程执行环境。远程执行环境(200)是这样的计算机环境,在其中分布式调试器的调试器引擎(216)控制应用(218)的执行。在图2的示例中,远程执行环境(200)被实现为没有图形用户界面的远程执行环境,比如,举例来说,IBM iSeriesTM或IBMzSeriesTM。
在图2的框图中,远程执行环境(200)包括远程执行安装(210)。远程执行安装(210)是包含数据通信模块(212)、调试器引擎(216)、和应用(218)的计算机系统。在图2的示例中,远程执行安装(210)可被实现为例如连接到因特网的单个计算机服务器。
图2的框图包括远程执行环境(205)。在图2的示例中,远程执行环境(205)被实现为网格计算环境。图2的网格计算环境用网络连接的节点(230)表示。每个节点已在其上安装有数据通信模块(232)、调试器引擎(236)、和用于在网格计算环境中执行和调试的应用(238)。
在图2的框图中,数据通信模块(232)是一组通过数据通信API提供给调试器引擎(236)数据通信连接的一个末端的计算机程序指令。数据通信连接末端可被实现为诸如TCP套接字。通过与数据通信模块(222)的数据通信连接(201),数据通信模块(232)提供给调试器引擎(236)与调试器客户(202)通信的能力。
在图2的框图中,调试器引擎(236)根据与调试器客户(202)的通信通过操作系统的调试API控制应用(238)的执行。调试器引擎(236)通过数据通信模块(232)与调试器客户(202)通信。调试器引擎(236)通过调用由数据通信模块(232)提供的数据通信API的函数调用与数据通信模块(232)通信。
根据本发明在分布式调试器中调试计算机程序一般用计算机,即,用自动计算机器实现。例如,在图1的系统中,所有的节点、服务器和通信设备至少在某种程度上被实现为计算机。因此,为进一步说明,图3给出根据本发明的实施例的包括可用于在分布式调试器中调试计算机程序的示例性计算机(152)的自动计算机器的框图。计算机(152)包括至少一个计算机处理器(156)或‘CPU’、以及通过系统总线(160)被连接到处理器(156)和计算机的其他部件的随机存取存储器(168)(‘RAM’)。
处理器(156)提供用于在分布式调试器中调试计算机程序的功能。处理器(156)的可用于调试的功能可包括通过提供处理器的特别用于断点目的一调试操作码指定断点的能力。处理器(156)可提供“中断”或“陷阱”功能,该功能当处理器遇到调试操作码时将控制流引向调试器。调试操作码和调试中断提供给处理器通知操作系统关于运行在处理器上的过程或线程的调试事件已发生的能力;操作系统然后可通过诸如引导中断到计算机存储器中的调试模块来通知该调试事件的调试器。此外,当调试中断发生时计算机处理器提供直接从计算机处理器寄存器中读出或向其写入的能力。
RAM(168)中所存储的是操作系统(154)。操作系统是负责计算机硬件和基本计算机系统操作的直接控制和管理的计算机程序。操作系统(154)通过调试应用编程接口(‘API’)(299)向调试器提供硬件和系统控制与管理。调试API(299)是一组由操作系统(154)提供的被调试器引擎使用的函数或软件例程。可包括在调试API(299)中的函数的示例包括使得调试器能在存储器中读取和设置值、在处理器寄存器中读取和设置值、中止和恢复线程处理等的函数。根据本发明的实施例的可在计算机中使用的操作系统包括UNIXTM、LinuxTM、Microsoft NTTM、AIXTM、IBM的i5/OSTM、和本领域中的技术人员可想到的其他系统。
存储在RAM(168)中的还有调试器客户(202)和调试器引擎(216)。调试器客户(202)是一组用于提供用户界面并发送请求给用于控制计算机程序的执行的调试器引擎的计算机程序指令。调试器引擎(216)是根据本发明的实施例的一组改进的用于在分布式调试器中调试计算机程序的计算机程序指令。调试器引擎(216)根据本发明的实施例被改进以用于定义以远程执行环境的一个或多个属性为条件的条件断点,在远程执行环境中在调试会话中调试程序,和在以远程执行环境的一个或多个属性为条件的条件断点处检索调试信息。
存储在RAM(168)中的还有应用(218),即用于执行用户级数据处理的计算机软件程序。在图3的示例中,调试器引擎(216)和调试器客户(202)提供应用(218)的分布式调试。尽管为易于说明调试器引擎(216)和调试器客户(202)在图3的示例中被示为在同一计算机(152)中,但读者将会认识到调试器引擎(216)和调试器客户(202)典型地被安装在不同的计算机系统中。图3的示例中的应用(218)、调试器客户(202)、调试器引擎(216)、和操作系统(154)被示为在RAM(168)中,但这样的软件的许多部件典型地也被存储在非易失性存储器(166)中。
图3的计算机(152)包括通过系统总线(160)被连接到处理器(156)和计算机(152)的其他部件的非易失性计算机存储器(166)。非易失性计算机存储器(166)可被实现为硬盘驱动器(170)、光盘驱动器(172)、电可擦可编程只读存储器(所谓‘EEPROM’或‘闪速’存储器)(174)、RAM驱动器(未示出)、或本领域中的技术人员可想到的任何其他种类的计算机存储器。
图3的示例计算机包括一个或多个输入/输出接口适配器(178)。计算机中的输入/输出接口适配器通过例如用于控制到诸如计算机显示屏的显示设备(180)的输出以及来自诸如键盘和鼠标的用户输入设备(181)的用户输入的软件驱动程序和计算机硬件来实现面向用户的输入/输出。
图3的示例性计算机(152)包括用于实现与其他计算机(182)的数据通信(184)的通信适配器(167)。这样的数据通信可通过RS-232连接、通过诸如USB的外部总线、通过诸如IP网络的数据通信网络、和本领域中的技术人员可想到的其他方式串行地执行。通信适配器实现硬件级的数据通信,通过该硬件级别的数据通信一台计算机直接地或通过网络将数据通信发送给另一个台计算机。根据本发明的实施例的可用于确定目地的的可用性的通信适配器的示例包括用于有线拨号通信的调制解调器、用于有线网络通信的以太网(IEEE 802.3)适配器、和用于无线网络通信的802.11b适配器。
为进一步说明,图4给出根据本发明的实施例的用于在分布式调试器中调试计算机程序的分布式调试器的示例性调试器客户GUI的线条图。在图4的示例中,调试器客户GUI(300)显示用于操作调试器步进功能的GUI步进按钮(303)。除了提供操作调试器步进功能的GUI步进按钮之外,图4的用户界面也提供用于操作调试器步进功能的键盘快捷键(308)。调试器客户GUI(300)提供文本块(332),在该块中调试器显示一段目前正在远程执行环境中执行的受分布式调试操作影响的计算机程序指令。对调试器步进功能的每个调用都将步进光标(321)移动到包含由计算机处理器在远程执行环境中执行的计算机程序代码的下一条语句的计算机程序代码行。
在图4的示例中,调试器客户GUI(300)显示用于操作调试器的步入(step in)功能的GUI步入按钮(304)。步入功能使得控制流进入到程序控制流结构。当步进光标(321)位于控制流入口点例如计算机程序代码(320)的行51上时操作步入功能,会将步进光标(321)移到包含进入的控制流结构内的计算机程序代码的第一条语句的行。
在图4的示例中,调试器客户GUI(300)显示用于操作调试器的步过(step over)功能以使得控制流越过程序控制流结构的GUI按钮(305)。当步进光标(321)位于控制流入口点例如计算机程序代码(320)的行51上时操作步过功能,会将步进光标(321)移到包含当前控制流结构中的计算机程序代码的下一条语句的行,例如,计算机程序代码(320)的行52。
在图4的示例中,调试器客户GUI(300)显示用于将用户断点插入到计算机程序代码(320)中的GUI按钮(301)。被插入到计算机程序代码(300)中的用户断点用紧邻计算机程序代码(320)的行号的‘BP’(323)表示且显示在调试器客户GUI(300)的用户断点区(380)中。
在图4的示例中的调试器客户GUI(300)的用户断点区(380)显示计算机程序代码(320)中的所有的用户断点的列表。用户断点区(380)示出将计算机程序代码中的用户断点位置(381)和程序计数器值(382)相关联的数据。程序计数器值(382)是当计算机处理器遇到用户断点时计算机处理器的程序计数器的值。
在图4的示例中,调试器客户GUI(300)显示用于将监视点(watchpoint)插入到计算机程序代码(320)中的监视点图标(302)。被插入到计算机程序代码(300)中的监视点用紧邻计算机程序代码(320)的行号的‘WP’表示并显示在调试器客户GUI(300)的监视点区(370)。
图4的示例中的调试器客户GUI(300)的监视点(370)区显示计算机程序代码(320)中的所有的监视点的列表。监视点区(370)示出将监视其特定值(372)的监视点变量(371)和包含监视点变量(371)的值(372)的计算机存储单元(373)相关联的数据。
在图4的示例中,调试器客户GUI(300)显示用于将条件断点插入到计算机程序代码(320)中的条件断点图标(307)。用户操作GUI按钮(307)以显示条件断点设置窗口(390)。被插入到计算机程序代码(300)中的条件断点用紧邻计算机程序代码(320)的行号的‘CB’(394)表示。
条件断点设置窗口(390)是用于提示用户输入用于条件断点(391)的条件的GUI。在图4的示例中,条件断点设置窗口(390)示出将断点标识符(391)和远程执行环境的属性(392)、值(395)、和属性(392)与值(395)之间的关系(393)相关联的数据。
在图4的示例中,调试器客户GUI(300)包括函数区(340)。函数区(340)示出对于计算机程序代码(300)中的所有函数将函数(342)和计算机存储单元(341)相关联的数据。计算机存储单元(341)包含用于执行的函数(342)的第一条计算机程序指令的位置。
在图4的示例中,调试器客户GUI(300)包括CPU区(310),其示出关于在远程执行环境中执行由计算机程序代码(320)表示的计算机机器代码的处理器的状态的信息。调试器客户GUI(300)的CPU区(310)显示被包含在程序计数器(311)、帧计数器(312)、寄存器(313)和栈(330)中的值。程序计数器是CPU中指向要被处理器执行的下一条指令的存储单元的寄存器。程序计数器的值在每条指令被执行完后变化,这或者是通过根据前一指令的长度递增,或者是由于分支到包含新指令的新的存储单元。栈是以后进先出方式存储数据的运行时数据结构。
图4的示例中的调试器客户GUI(300)包括反汇编区(350)。反汇编区(350)显示在处理器上执行的计算机机器代码的汇编语言。图4的示例中的反汇编区(350)示出将计算机机器代码数据、包含该数据的存储器地址、和该数据的汇编语言助记码相关联的数据。
在图4的示例中,调试器客户GUI(300)包括变量区(360)。变量区(360)包含计算机程序代码(320)中的所有变量的列表。图4的示例中的变量区(360)示出将变量名、当前值、和存储该值的存储器地址相关联的数据。
为进一步说明,图5给出的流程图示出根据本发明的实施例的用于在分布式调试器中调试计算机程序的示例性方法,该方法包括定义(400)以远程执行环境的一个或多个属性为条件的条件断点,在远程执行环境中在调试会话中调试(420)的计算机程序,和在以远程执行环境的一个或多个属性为条件的条件断点处检索(440)调试信息。
根据图5的方法的、定义(400)以远程执行环境的一个或多个属性为条件的条件断点包括从调试器客户(404)接收远程执行环境的属性(401)值。远程执行环境的属性(401)例如可包括在该远程执行环境中运行的操作系统的类型或该远程执行环境的物理位置。调试器引擎可通过诸如TCP套接字的数据通信连接的末端从调试器客户(404)接收远程执行环境的属性(401)值。该属性值可由用户通过调试器客户的GUI输入,例如作为定义条件断点的过程的一部分。
在图5的方法中,定义(400)以远程执行环境的一个或多个属性为条件的条件断点包括指派(406)条件(413)给条件断点。可通过使用诸如条件断点表(410)的数据结构将该条件与条件断点相关联。图5的示例中的条件断点表(410)将断点标识符(411)与程序计算器值(412)和条件(413)相关联。程序计数器值(412)是当计算机处理器遇到被断点标识符(411)标识的条件断点时的计算机处理器的程序计数器的值。条件(413)是遇到条件断点时调试器引擎对其求值的布尔表达式。条件(413)指定满足该条件的远程执行环境的属性值和从调试器客户接收的值之间的关系。例如,条件断点的条件(413)可被实现为表达式“ProcessorType=‘Power5’”,这指定如果远程执行环境的‘ProcessorType’属性的值是‘Power5’,则该条件满足。
图5的方法包括在远程执行环境中在调试会话中调试(420)计算机程序。根据图5的方法的在远程执行环境中在调试会话中调试(420)计算机程序包括检索(422)存储的程序计数器值(430)。存储的程序计数器值(430)是当计算机处理器遇到条件断点时计算机处理器的程序计数器的值。在遇到条件断点后,一中断处理程序或操作系统函数将包括程序计数器的当前值的处理器的硬件寄存器的值存储在计算机存储器中,并转移处理器控制给调试器。调试器然后可通过调用调试API的函数检索存储的程序计数器值(430),比如,举例来说,通过‘ioctl()’函数调用UNIX的‘PIOCGREG’命令或调用Win32的‘GetThreadContext’函数。
当在遇到断点时检索程序计数器的值之后,调试器引擎然后可在例如象表(410)的条件断点表中查找断点以识别该条件断点的条件。在该示例中,实际上,调试器引擎直到其在表(410)中找到由程序计数器值标识的断点的记录才知道该断点是条件断点。
在图5的方法中,在远程执行环境中在调试会话中调试(420)计算机程序包括确定(423)条件断点条件是否满足。根据图5的方法的确定(423)条件断点条件是否满足可通过对与条件断点表(410)中的条件断点相关联的条件(413)求值来执行。例如,考虑由“ProcessorType=‘Power5’”指定的条件。调试器引擎可通过对远程执行环境的‘ProcessorType’属性的值是否等于‘Power5’求值来确定(423)“ProcessorType=‘Power5’”条件是否满足。调试器引擎可通过调用诸如Java标准系统类的‘getProperties()’函数或Java标准的运行时类的‘availableProcessors()’函数的Java API函数获得用于确定(423)断点条件是否满足的远程执行环境的属性值。此外,操作系统典型地通过对调试器引擎可用的API调用提供关于执行环境的配置信息。Unix的各种版本提供例如下列函数:
·char *getenv(const char *name)—搜索环境列表中的形式为name=value的字符串并返回指向当前环境中的值的指针;
·long sysinfo(int command,char*buf,long count)—将与进程在其上执行的操作系统相关的信息复制到由buf指向的缓冲区。count参数指示缓冲区的大小。POSIX P1003.1接口sysconf()提供类似的配置信息类,但返回一个整数而不是字符串。
·int uname(struct utsname*name)—将标识当前操作系统的信息存储在name所指向的结构中。uname()函数返回的信息包括:当前操作系统的名称,远程系统在通信网络上所知的名称,操作系统的发布和版本号,和操作系统正在其上运行的硬件平台和处理器的标识符。
·long sysconf(int name)—为调试器提供确定可配置的系统限制或选项(变量)的当前值的方法。name参数表示将被查询的系统变量。下表列出可被sysconf()返回的来自<limits.h><unistd.h>的系统变量的最小集合和在<unistd.h>中定义的、作为用于name的相应的值的符号常量。
如果条件(413)不满足,则调试器引擎不通过调试器客户通知用户条件断点遇到。相反,调试器引擎命令操作系统继续由计算机处理器执行调试中的计算机程序,直到遇到下一个断点。就是说,图5的方法通过当处理器遇到条件断点时再次检索(422)存储的程序计数器值(430)而继续。
如果条件(413)满足,图5的方法包括在以远程执行环境的一个或多个属性为条件的条件断点处检索(440)调试信息(450)。调试信息(450)是当计算机处理器遇到条件断点时表示计算机程序或计算机处理器的状态的值。调试信息(450)可包括诸如处理器寄存器的值、计算机程序变量的值、程序计数器的值等的值。调试器引擎可通过调用调试API的函数检索(440)调试信息(450),例如,通过‘ioctl()’函数调用UNIX的‘PIOCGREG’命令或调用Win32的‘GetThreadContext’函数。在检索(440)调试信息(450)之后,调试器引擎可通过诸如TCP套接字的数据通信连接的末端将调试信息(450)传输给调试器客户,以便通过GUI显示给用户。
为进一步说明,图6给出了根据本发明的实施例的支持在分布式调试器中调试计算机程序的示例性数据结构的线条图。图6的示例数据结构(500)表示远程执行环境的属性。图6的示例中的数据结构(500)将远程执行环境标识符(501)与处理器类型(502)、处理器数量(503)、存储器容量(504)、输入/输出设备类型(505)、远程执行环境是否包含逻辑分区的指示(506)、分区是否已经为资源分配设定上限的指示(507)、处理器是否专用于逻辑分区的指示(508)、软件类型(509)、软件版本(510)、和网格位置(511)相关联。
在图6的示例中,表示远程执行环境的属性的数据结构(500)包括用于表示远程执行环境的被实现为处理器类型的属性的数据元素(502)。数据元素(502)存储表示在远程执行环境中执行计算机程序指令的计算机处理的类型的值。数据元素(502)可存储表示诸如IBM Power4处理器、IBMPower5处理器、 D处理器、AMD AthlonTM64处理器等的计算机处理器类型的值。本领域中的读者将认识到如果远程执行环境包含一个以上的计算机处理器,则在数据结构(500)中会需要一个以上用于表示处理器类型的数据元素。
在图6的示例中,表示远程执行环境的属性的数据结构(500)包括用于表示远程执行环境的被实现为处理器的数量的属性的数据元素(503)。数据元素(503)存储表示在远程执行环境中执行计算机程序指令的计算机处理器的数量的值。
在图6的示例中,表示远程执行环境的属性的数据结构(500)包括用于表示远程执行环境的被实现为存储器容量的属性的数据元素(504)。数据元素(504)存储表示远程执行环境中的物理计算机存储器容量的值。数据元素(504)可存储表示远程执行环境中的的物理计算机存储器容量的诸如512兆字节或1吉字节的值。
在图6的示例中,表示远程执行环境的属性的数据结构(500)包括用于表示远程执行环境的被实现为输入/输出设备类型的属性的数据元素(505)。数据元素(505)存储表示远程执行环境中的输入/输出设备的类型的值。数据元素(505)可存储表示诸如盘驱动器、键盘驱动器、RAID存储单元等的输入/输出设备的类型的值。本领域中的读者将认识到如果远程执行环境包含一个以上的输入/输出设备,则在数据结构(500)中会需要一个以上的用于表示输入/输出设备类型的数据元素。
在图6的示例中,表示远程执行环境的属性的数据结构(500)包括用于表示远程执行环境的、被实现为远程执行环境是否包含逻辑分区的指示的属性的数据元素(506)。数据元素(506)可被实现为布尔标志。TRUE值表明远程执行环境支持逻辑分区,而FALSE值表明远程执行环境不支持逻辑分区。
示例性数据结构(500)包括指定分区是否已经为在支持逻辑分区的远程执行环境中使用的资源分配设定上限的数据元素(507)。资源分配的上限可包括例如可用于一分区的计算机存储器的最大比例、关于可被指派给特定分区的处理器的限制、输入/输出容量的最大限制等。示例性数据结构(500)也包括指定处理器是否专用于逻辑分区的数据元素(508)。示例性数据结构(500)包括表示运行在远程执行环境中的计算机软件的类型的数据元素(509)。就数据元素(509)存储关于一项以上软件的类型的信息来说,数据元素(509)可被实现为指向更大的数据结构的指针,在该数据结构中可存储描述软件类型的信息。数据元素(509)可存储标识诸如LinuxTM操作系统、Java虚拟机、标准安全套接字层(‘SSL’)、专有SSL等的系统软件类型的数据。数据元素(509)也可存储标识诸如字处理器、电子表格程序、电子邮件客户、浏览器、数据库管理系统等的应用软件类型的数据。
示例性数据结构(500)也包括表示运行在远程执行环境中的计算机软件的版本的数据元素(510)。数据元素(510)可存储由数据元素(509)标识的运行在远程执行环境中的系统软件和应用软件的一个或多个特定的版本。就数据元素(510)存储关于一项以上软件的版本的信息来说,数据元素(510)可被实现为指向更大的数据结构的指针,该数据结构中可存储描述软件版本的信息。数据元素(510)可存储表示诸如Java开发工具包(‘JDK’)版本1.3、JDK版本1.4、红帽Linux的版本9等的软件版本的值。
示例性数据结构(500)也包括表示形成网格计算环境的一部分的远程执行环境的网格位置的数据元素(511)。数据元素(511)可存储表示诸如网格节点标识符、地理坐标、网络地址等的位置的值。
本发明的示例性实施例主要是在用于在分布式调试器中调试计算机程序的全功能计算机系统的上下文中被描述的。但是,本领域中的读者将认识到本发明也可体现在设置在信号承载介质中的可用于任何适合的数据处理系统的计算机程序产品中。这种信号承载介质可以是用于机器可读信息的传输介质或可记录介质,包括磁介质、光介质、或其他适当的介质。可记录的介质的示例包括硬盘驱动器中的磁盘或软盘、用于光盘驱动器的光盘、磁带、和本领域中的技术人员可想到的其他介质。传输介质的示例包括用于语音通信的电话网络和诸如EthernetsTM和以网际协议和万维网通信的网络的数字数据通信网络。本领域中的技术人员将立即认识到任何具有适当的编程序装置的计算机系统将能够执行体现在程序产品中的本发明的方法的步骤。本领域中的技术人员将立即认识到尽管本说明书中描述的一些示例性实施例面向安装在计算机硬件上并在其上执行的软件,然而,其他可选的被实现为固件或硬件的实施例也完全在本发明的范围内。
从以上的描述可知可在本发明的各实施例中作出修改或改变而不偏离本发明的实质精神。本说明书中的描述仅为例示目的而不应在限制的意义上理解。本发明的范围仅受下面权利要求的语言限制。
Claims (11)
1.一种用于在分布式调试器中调试计算机程序的方法,该方法包括:
定义以远程执行环境的一个或多个属性为条件的条件断点;
在该远程执行环境中在调试会话中调试计算机程序;以及
在以远程执行环境的一个或多个属性为条件的断点处检索调试信息。
2.根据权利要求1的方法,其中所述远程执行环境的一个或多个属性进一步包括:
处理器是否专用于逻辑分区或在多个逻辑分区之间被共享的指示;以及
分区是否具有已设定上限的或设定上限的资源分配的指示。
3.根据权利要求1的方法,其中所述远程执行环境的一个或多个属性进一步包括处理器类型、处理器数量、存储器容量、和输入/输出设备类型。
4.根据权利要求1的方法,其中所述远程执行环境进一步包括网格计算环境。
5.根据权利要求4的方法,其中所述远程执行环境的一个或多个属性进一步包括所述远程执行环境的网格位置。
6.根据权利要求1的方法,其中所述远程执行环境的一个或多个属性包括在所述远程执行环境中操作的计算机软件的类型和版本。
7.根据权利要求1的方法,其中所述远程执行环境进一步包括没有图形用户界面的执行环境。
8.一种用于在分布式调试器中调试计算机程序的装置,该装置包括:
用于定义以远程执行环境的一个或多个属性为条件的条件断点的装置;
用于在该远程执行环境中在调试会话中调试计算机程序的装置;以及
用于在以该远程执行环境的一个或多个属性为条件的断点处检索调试信息的装置。
9.根据权利要求8的装置,其中所述远程执行环境的一个或多个属性进一步包括:
处理器是否专用于逻辑分区或在多个逻辑分区之间被共享的指示;以及
分区是否具有已设定上限的或未设定上限的资源分配的指示。
10.根据权利要求8的装置,其中所述远程执行环境的一个或多个属性进一步包括处理器类型、处理器数量、存储器容量、和输入/输出设备类型。
11.根据权利要求8的装置,其中所述远程执行环境的一个或多个属性包括在该远程执行环境中操作的计算机软件的类型和版本。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/266,735 US20070168994A1 (en) | 2005-11-03 | 2005-11-03 | Debugging a computer program in a distributed debugger |
US11/266,735 | 2005-11-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1959652A CN1959652A (zh) | 2007-05-09 |
CN100538656C true CN100538656C (zh) | 2009-09-09 |
Family
ID=38071354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610143711XA Expired - Fee Related CN100538656C (zh) | 2005-11-03 | 2006-11-02 | 在分布式调试器中调试计算机程序的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070168994A1 (zh) |
CN (1) | CN100538656C (zh) |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
US20070168696A1 (en) * | 2005-11-15 | 2007-07-19 | Aternity Information Systems, Ltd. | System for inventing computer systems and alerting users of faults |
US20070168997A1 (en) * | 2005-12-20 | 2007-07-19 | Duong-Han Tran | Debugging of remote application software on a local computer |
US7882494B2 (en) * | 2007-03-14 | 2011-02-01 | Business Objects Software Ltd. | Apparatus and method for manipulating variable states |
CN101360067B (zh) * | 2007-07-30 | 2012-11-07 | 国际商业机器公司 | 基于消息收发系统的组联合调试系统、方法 |
US8001531B1 (en) * | 2007-07-30 | 2011-08-16 | Nvidia Corporation | Translation of a shader assembly language binary for debugging a graphics application running on a remote device |
US8006232B1 (en) * | 2007-07-30 | 2011-08-23 | Nvidia Corporation | Serialization of function calls to a graphics API for debugging a remote device |
US8448159B2 (en) * | 2007-11-02 | 2013-05-21 | Tti Inventions C Llc | Method and system for policy enabled programming |
US8769502B2 (en) * | 2007-12-21 | 2014-07-01 | Sap Ag | Template based asynchrony debugging configuration |
US8239839B2 (en) * | 2007-12-21 | 2012-08-07 | Sap Ag | Asynchrony debugging using web services interface |
US20100057865A1 (en) * | 2008-09-04 | 2010-03-04 | International Business Machines Corporation | Transferable Debug Session in a Team Environment |
US8321454B2 (en) * | 2009-09-14 | 2012-11-27 | Myspace Llc | Double map reduce distributed computing framework |
CN101667156B (zh) * | 2009-09-22 | 2012-09-26 | 中兴通讯股份有限公司 | 一种可视化业务流程调试方法和系统 |
JP5526725B2 (ja) * | 2009-11-20 | 2014-06-18 | 富士通株式会社 | ハードウェアブレークポイントを用いたデバッグ方法、デバッグ処理プログラム及びデバッグ装置 |
US20110191752A1 (en) * | 2010-01-29 | 2011-08-04 | Christophe Cleraux | Method and System for Debugging of Software on Target Devices |
US8856742B2 (en) | 2010-06-11 | 2014-10-07 | International Business Machines Corporation | Distributed debugging |
US8904356B2 (en) | 2010-10-20 | 2014-12-02 | International Business Machines Corporation | Collaborative software debugging in a distributed system with multi-member variable expansion |
US8671393B2 (en) * | 2010-10-21 | 2014-03-11 | International Business Machines Corporation | Collaborative software debugging in a distributed system with client-specific dynamic breakpoints |
US8972945B2 (en) | 2010-10-21 | 2015-03-03 | International Business Machines Corporation | Collaborative software debugging in a distributed system with client-specific access control |
US20120102466A1 (en) * | 2010-10-21 | 2012-04-26 | International Business Machines Corporation | Collaborative Software Debugging In A Distributed System With Graphic Representation Of Source Code Ownership Assignments |
US9009673B2 (en) | 2010-10-21 | 2015-04-14 | International Business Machines Corporation | Collaborative software debugging in a distributed system with collaborative step over operation |
US9015676B2 (en) | 2010-10-29 | 2015-04-21 | International Business Machines Corporation | Varying removal of internal breakpoints during debugging of code |
US8806447B2 (en) * | 2010-10-29 | 2014-08-12 | International Business Machines Corporation | Step-type operation processing during debugging by machine instruction stepping concurrent with setting breakpoints |
US8843899B2 (en) * | 2010-10-29 | 2014-09-23 | International Business Machines Corporation | Implementing a step-type operation during debugging of code using internal breakpoints |
US8850397B2 (en) * | 2010-11-10 | 2014-09-30 | International Business Machines Corporation | Collaborative software debugging in a distributed system with client-specific display of local variables |
US8990775B2 (en) | 2010-11-10 | 2015-03-24 | International Business Machines Corporation | Collaborative software debugging in a distributed system with dynamically displayed chat sessions |
US9411709B2 (en) | 2010-11-10 | 2016-08-09 | International Business Machines Corporation | Collaborative software debugging in a distributed system with client-specific event alerts |
US8412984B2 (en) * | 2010-11-12 | 2013-04-02 | Microsoft Corporation | Debugging in a cluster processing network |
US9021436B2 (en) * | 2010-12-08 | 2015-04-28 | Microsoft Technology Licensing Llc | Automatic reconnection of debugger to a reactivated application |
CN102096634A (zh) * | 2010-12-31 | 2011-06-15 | 中国航空工业集团公司第六三一研究所 | 基于事件级的机载分布式节点调试方法 |
US8656360B2 (en) | 2011-04-20 | 2014-02-18 | International Business Machines Corporation | Collaborative software debugging in a distributed system with execution resumption on consensus |
US8806438B2 (en) | 2011-04-20 | 2014-08-12 | International Business Machines Corporation | Collaborative software debugging in a distributed system with variable-specific messages |
US8739127B2 (en) | 2011-04-20 | 2014-05-27 | International Business Machines Corporation | Collaborative software debugging in a distributed system with symbol locking |
US8756577B2 (en) | 2011-06-28 | 2014-06-17 | International Business Machines Corporation | Collaborative software debugging in a distributed system with private debug sessions |
US10025693B2 (en) | 2011-10-31 | 2018-07-17 | International Business Machines Corporation | Pseudo hardware watch points for remote debugging of non-initialized processors |
US9244812B2 (en) * | 2012-01-31 | 2016-01-26 | Siemens Industry, Inc. | Methods and systems in an automation system for viewing a current value of a point identified in code of a corresponding point control process |
US9720676B2 (en) * | 2012-02-09 | 2017-08-01 | International Business Machines Corporation | Implementing updates to source code executing on a plurality of compute nodes |
US8726209B1 (en) * | 2012-02-14 | 2014-05-13 | C{dot over (a)}dence Design System, Inc. | Method and system for automatically establishing a component description format (CDF) debugging environment |
US9274931B2 (en) * | 2013-05-06 | 2016-03-01 | International Business Machines Corporation | Inserting implicit sequence points into computer program code to support debug operations |
CN105630661B (zh) * | 2014-10-29 | 2018-09-25 | 国际商业机器公司 | 用于自动化跨系统程序调试的方法和装置 |
US9471463B1 (en) * | 2015-04-16 | 2016-10-18 | International Business Machines Corporation | Debug management using dynamic analysis based on state information |
US9952863B1 (en) * | 2015-09-01 | 2018-04-24 | Apple Inc. | Program counter capturing |
US10360129B2 (en) * | 2015-11-03 | 2019-07-23 | International Business Machines Corporation | Setting software error severity ranking |
CN105653448B (zh) * | 2015-12-25 | 2019-04-30 | 深圳中兴网信科技有限公司 | 应用调试方法、应用调试装置和终端 |
US10372588B2 (en) * | 2016-07-08 | 2019-08-06 | International Business Machines Corporation | Providing debug information on production containers using debug containers |
US10169201B2 (en) * | 2017-01-07 | 2019-01-01 | International Business Machines Corporation | Debug management in a distributed batch data processing environment |
US10275337B2 (en) * | 2017-01-17 | 2019-04-30 | International Business Machines Corporation | Intelligent processing of distributed breakpoints |
US10564950B1 (en) | 2018-09-12 | 2020-02-18 | International Business Machines Corporation | Disassembly code generation during debugging |
CN109684795B (zh) * | 2018-12-25 | 2023-01-24 | 成都卫士通信息产业股份有限公司 | 应用程序反调试的方法、装置及电子设备 |
JP7134903B2 (ja) * | 2019-03-05 | 2022-09-12 | 株式会社日立製作所 | 不具合再現支援システム、不具合再現支援方法 |
CN111143218B (zh) * | 2019-12-27 | 2024-03-26 | 深圳市共进电子股份有限公司 | 适用于5G嵌入式设备的log调试方法、装置和可读存储介质 |
US11645193B2 (en) * | 2020-07-07 | 2023-05-09 | International Business Machines Corporation | Heterogeneous services for enabling collaborative logic design and debug in aspect oriented hardware designing |
US20230281107A1 (en) | 2022-03-04 | 2023-09-07 | Woven By Toyota, Inc. | Apparatus and method for debugging autonomous driving application with conditional breakpoint |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7284156B2 (en) * | 2003-09-19 | 2007-10-16 | International Business Machines Corporation | Debugging a grid environment using ghost agents |
-
2005
- 2005-11-03 US US11/266,735 patent/US20070168994A1/en not_active Abandoned
-
2006
- 2006-11-02 CN CNB200610143711XA patent/CN100538656C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20070168994A1 (en) | 2007-07-19 |
CN1959652A (zh) | 2007-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100538656C (zh) | 在分布式调试器中调试计算机程序的方法和装置 | |
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
US8813037B2 (en) | Debugging a high performance computing program | |
US8276126B2 (en) | Determining causes of software regressions based on regression and delta information | |
US10075509B2 (en) | Capture, analysis, and visualization of concurrent system and network behavior of an application | |
US7512933B1 (en) | Method and system for associating logs and traces to test cases | |
Syer et al. | Leveraging performance counters and execution logs to diagnose memory-related performance issues | |
US8418149B2 (en) | Differential comparison system and method | |
US6192511B1 (en) | Technique for test coverage of visual programs | |
CN107066390B (zh) | 一种动态内存泄漏检测方法及系统 | |
US20050071813A1 (en) | Program analysis tool presenting object containment and temporal flow information | |
US20130159977A1 (en) | Open kernel trace aggregation | |
CN105094783A (zh) | 安卓应用稳定性测试的方法及装置 | |
KR20110124733A (ko) | 동적 인스트루먼테이션을 통한 커스텀 코드의 진단을 스트림라인하기위한 메소드 콜의 검출 | |
JP2009516239A (ja) | コンピュータアプリケーションの追跡及びモニタリングを行う汎用のマルチインスタンスメソッド及びgui検出システム | |
US20030188298A1 (en) | Test coverage framework | |
CN1248116C (zh) | 一种基于主机平台的嵌入式模块和子系统的通用测试装置 | |
US20070150870A1 (en) | Method and apparatus for context oriented computer program tracing and visualization | |
US11436133B2 (en) | Comparable user interface object identifications | |
TW201616356A (zh) | 偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品 | |
US20080127119A1 (en) | Method and system for dynamic debugging of software | |
CN114168471A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN115705250A (zh) | 监测堆栈使用量以优化程序 | |
Gralka et al. | Visual exploration of memory traces and call stacks | |
US20130307854A1 (en) | Method and System for Visualising a System Model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090909 Termination date: 20091202 |