CN104937560A - 用于远程系统调试的方法和装置 - Google Patents

用于远程系统调试的方法和装置 Download PDF

Info

Publication number
CN104937560A
CN104937560A CN201380072013.3A CN201380072013A CN104937560A CN 104937560 A CN104937560 A CN 104937560A CN 201380072013 A CN201380072013 A CN 201380072013A CN 104937560 A CN104937560 A CN 104937560A
Authority
CN
China
Prior art keywords
computer system
software code
exemplary
data
data element
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.)
Granted
Application number
CN201380072013.3A
Other languages
English (en)
Other versions
CN104937560B (zh
Inventor
N.马加利特
M.米沙洛夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Weifosi Co., Ltd
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN104937560A publication Critical patent/CN104937560A/zh
Application granted granted Critical
Publication of CN104937560B publication Critical patent/CN104937560B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Abstract

公开了用于远程系统调试的方法和装置。示例性装置包括激活程序,用以在第一计算机系统与第二计算机系统之间建立连接;数据获取程序,用以经由该连接将第一组数据元素的值从第二计算机系统传输到第一计算机系统;执行程序,用以在连接关闭之后使用传输的第一组数据元素的值在第一计算机系统上执行第一软件代码;以及调试程序,用以在所述执行程序在第一计算机系统上执行第一软件代码之后在第一计算机系统上调试第一软件代码。

Description

用于远程系统调试的方法和装置
背景技术
当编写、更新以及维护软件代码时,可能需要对其进行调试以便确保适当的功能性。软件源代码常常包含差错或“bug(错误)”,其在软件代码被编译和/或执行时促使软件代码并不适当地或如预期的那样运行。为了软件代码适当地运行,可由程序员通过调试的过程来识别和/或修正这些错误。可以通过使用调试程序来辅助调试。调试程序是程序员可用来调试软件代码的软件应用程序。调试程序通常包含在调试过程中帮助程序员(诸如允许每次一行地执行软件代码、允许程序员检查与软件代码相关联的某些数据结构的内容等等)的工具。
附图说明
图1是根据本公开的教导构造的示例性调试系统的框图。
图2是图1的示例性调试程序的示例性实施方式的框图。
图3是表示供在图1的示例性调试系统中使用的注释说明的JAVA代码。
图4和5是表示可执行以实现图1的示例性调试系统的示例性机器可读指令的流程图。
图6是能够执行图4和5的示例性机器可读指令以实现图1的示例性调试系统的示例性处理系统的框图。
具体实施方式
常常由实际上出现在包含要调试的软件代码的计算机系统处的程序员来执行软件调试。然而,有时要使程序员实际上出现在包含要调试的软件代码的计算机系统处是不可能、不切实际和/或不方便的。在这些情况下,程序员可出现在一个计算机系统(即,本地计算机系统)处,该计算机系统经由网络连接到在包含要调试的软件代码的不同位置处的另一计算机系统(即,远程计算机系统)。使用已知联网软件,程序员可以从本地计算机系统操作远程计算机系统。这允许调试员在实际上出现在本地计算机系统处的同时使用远程计算机系统上的调试程序在远程计算机系统上调试软件代码。
通过在本地计算机系统与远程计算机系统之间建立网络连接,可以由实际上出现在本地计算机系统处的程序员来远程地调试远程计算机系统上的软件代码。然而,在正在调试软件代码的同时保持本地计算机系统与远程计算机系统之间的网络连接可消耗远程计算机系统上的相当多的资源。此资源使用可以潜在地阻止远程计算机系统运行其它应用程序或过程。
作为替换,可以完全在本地计算机系统上调试软件代码,其中,本地计算机系统上的软件代码在程序员开始调试时与远程计算机系统上的软件代码相同。在本地计算机系统上的调试完成之后,可以对远程计算机系统上的软件代码做出对本地计算机系统上的软件代码做出的任何改变。这种完全在本地计算机系统上调试软件的方法可在调试的同时不保持本地计算机系统与远程计算机系统之间的开放连接。然而,这种方法并不使用远程计算机系统上的数据来执行调试。
当执行软件代码时,其通常操纵一定量的数据。例如,软件代码可能从数据库访问数据,创建多个变量或其它数据对象以在执行软件代码的同时使用,并且从数据库添加、删除或修改数据。同样地,当软件代码正在执行时,其对在软件代码的执行期间和/或由于软件代码的执行可改变的数据进行操作。软件代码常常在对不同数据进行操作时不同地进行响应。例如,软件代码中的某些错误可能仅在软件代码正在对某些数据进行操作时出现。因此,为了有效地从本地计算机系统对远程计算机系统上的软件代码进行调试,在本文中公开的示例为本地计算机系统提供对远程计算机系统上的数据的访问。在某些示例中,并不在整个调试过程中都保持本地计算机系统与远程计算机系统之间的数据连接以减少远程计算机系统上的资源负荷。
在本文中公开的示例性方法、装置和/或制品提供了一种用于远程计算机系统的离线调试的机制。如在本文中使用的,术语离线被明确地定义成意指其中被用于从远程计算机系统检索用于调试的数据的数据连接被关闭、使得在不采取行动以建立数据连接的情况下在该数据连接上不能存在进一步的通信的状态。特别地,在本文中公开的示例允许在不保持本地计算机系统与远程计算机系统之间的开放连接的情况下使用来自远程计算机系统的数据从本地计算机系统调试远程计算机系统上的软件代码。如下面更详细地描述的,软件代码的某些(例如,关键)区段被标记以指示那些区段包含对于调试而言将可能相关(例如,重要)的数据元素。此标记软件代码存在于本地计算机系统和远程计算机系统两者上。
在本文公开的示例中,要调试的示例性软件代码常驻于示例性本地计算机系统和示例性远程计算机系统上。在正常操作期间,示例性软件代码在示例性远程计算机系统上执行。当要调试示例性软件代码时,在本文公开的示例中,示例性本地计算机系统建立到示例性远程计算机系统的连接并请求已标记数据。示例性远程计算机系统然后将包括所请求数据的数据快照拷贝到示例性本地计算机系统。在本文公开的示例中,在所请求数据被从示例性远程计算机系统传输到示例性本地计算机系统之后,本地计算机系统与远程计算机系统之间的连接关闭。然后在连接保持关闭的同时使用从示例性远程计算机系统拷贝的数据在示例性本地计算机系统上执行示例性软件代码,从而减少网络资源的使用。在本文公开的示例中,在示例性软件代码完成在示例性本地计算机系统上的执行之后和/或在正在本地计算机系统上执行软件代码的同时,使用调试程序在本地计算机系统上调试软件代码。
由于并非在调试过程的总持续时间期间都在示例性本地计算机系统与示例性远程计算机系统之间保持开放连接(例如,仅在用来将数据快照从远程计算机系统拷贝到本地计算机系统的时间期间保持该开放连接),所以减少(例如,最小化)远程计算机系统资源的使用。此外,通过使用存在于示例性远程计算机系统上的相同数据来执行示例性本地计算机系统上的示例性软件代码,该软件代码以软件代码在远程计算机系统上执行的相同方式在本地计算机系统上执行。因此,在执行示例性远程计算机系统上的示例性软件代码时将存在的任何错误在执行示例性本地计算机系统上的软件代码时也将存在。同样地,可以在示例性本地计算机系统上调试示例性软件代码,就如同正在示例性远程计算机系统上调试软件代码一样。
在本文公开的某些示例中,如果在正在示例性本地计算机系统上调试示例性软件的同时需要来自示例性远程计算机系统的已更新数据,则本地计算机系统建立到远程计算机系统的新连接以从远程计算机系统接收已更新数据(例如,新数据快照)。在示例性本地计算机系统上的示例性软件代码的调试完成之后,在某些公开示例中,将已调试软件代码的拷贝传输到示例性远程计算机系统,使得远程计算机系统具有与本地计算机系统相同的已调试软件代码。
图1是根据本公开的教导构造的示例性调试系统100的框图。图1的示例性系统100包括本地计算机系统102和远程计算机系统110。在所示示例中,本地计算机系统102能够经由网络116与远程计算机系统110通信且反之亦然。示例性网络116允许在示例性本地计算机系统102与示例性远程计算机系统110之间选择性地实现和/或断开连接。可使用任何类型的公共或私用网络来实现示例性网络116,诸如但不限于因特网、电话网、局域网(LAN)、电缆网和/或无线网络。为了使得能够经由示例性网络116来进行通信,图1的示例性本地计算机系统102和示例性远程计算机系统110中的每一个包括使得能够经由以太网、数字订户线(DSL)、电话线、同轴电缆和/或无线连接等来实现到网络的连接的通信接口。
图1的示例性本地计算机系统102包括调试程序104和软件代码106A。示例性远程计算机系统110包括数据获取程序112、数据储存器114和软件代码106B。示例性本地计算机系统102上的示例性软件代码106A最初类似于示例性远程计算机系统110上的示例性软件代码106B(例如,相同)。示例性本地计算机系统102上的示例性软件代码106A和/或示例性远程计算机系统110上的示例性软件代码106B包括已标记区段108。已标记区段108识别在调试本地计算机系统102上的示例性软件代码106A之前将从示例性远程计算机系统110拷贝到示例性本地计算机系统102的变量、对象和/或其它数据元素。
示例性本地计算机系统102的示例性调试程序104用来调试常驻于本地计算机系统102上的示例性软件代码106A。示例性调试程序104经由示例性网络116来建立示例性本地计算机系统102与示例性远程计算机系统110之间的连接。示例性调试程序104将数据从远程计算机系统110拷贝到本地计算机系统102并存储已拷贝数据。示例性调试程序104使用从示例性远程计算机系统110拷贝的数据来编译和/或执行示例性本地计算机系统102上的示例性软件代码106A。示例性调试程序104检测和/或修正示例性本地计算机系统102上的示例性软件代码106A中的差错。
示例性软件代码106B在远程计算机系统110的正常操作期间在示例性远程计算机系统110上执行。在某些示例中,远程计算机系统110上的软件代码106B与本地计算机系统102上的软件代码106A相同。在所示示例中,用JAVA编程语言来编写软件代码106A、106B。替换地,可用可以在本地计算机系统102和远程计算机系统110上编译和/或执行的任何其它编程语言来编写示例性软件代码106A、106B。
如上所述,示例性本地计算机系统102上的示例性软件代码106A和/或示例性远程计算机系统110上的示例性软件代码106B包含已标记区段108。示例性软件代码106A、106B的已标记区段108识别当在本地计算机系统102上调试软件代码106A时将从示例性远程计算机系统110拷贝到示例性本地计算机系统102的数据元素,诸如变量和/或其它对象。可以任何期望方式(例如,手动地、自动地等)来识别已标记区段108。
在所示示例中,使用JAVA注释来识别已标记区段108。JAVA注释是允许向JAVA软件代码添加元数据的JAVA编程语言的特征。可以使用JAVA注释来向JAVA代码中的变量、方法、类和/或其它元素供应元数据。使用直接地后面是注释类型名(诸如像Override、Deprecated或SuppressWarnings)的‘’符号来以JAVA代码实现注释。Override、Deprecated和SuppressWarnings是被嵌入JAVA语言中的三个注释类型。在JAVA代码中注释类型后面是要注释的一个或多个元素。
除嵌入注释类型之外,还可以在JAVA代码中使用自定义用户定义注释。JAVA注释可以用于多个目的,除其它可能性之外,还包括提供文档编制和向编译程序提供信息。在所示示例中,使用JAVA注释来识别示例性软件代码106A、106B的示例性已标记区段108,以识别将从远程计算机系统110拷贝到本地计算机系统102以促进调试的软件代码106A、106B中的数据元素。
在某些示例中,添加到软件代码106A、106B的JAVA注释向编译程序指示将在注释的位置处向源代码106A中插入(例如,注入)软件指令。注入的代码区段指示将从包含从示例性远程计算机系统110传输的数据快照的示例性数据代理202加载用于所识别数据元素的值。因此,当在调试期间在示例性本地计算机系统102上执行编译代码106A时,先前注入的代码区段促使该执行利用示例性数据代理202中的数据,其已被从远程计算机系统110上的相关数据克隆。
虽然示例性软件代码106A、106B包括JAVA注释以识别已标记区段108,但可以另外和/或替换地利用识别示例性软件代码106A、106B中的已标记区段108的任何其它方法。同样地,虽然上述示例是用JAVA实现的,但可用任何过去、现在和/或未来的编程语言来实现示例性软件代码106A、106B和已标记区段108。示例性软件代码106A、106B的已标记区段108允许在软件代码106B正在远程计算机系统110上执行的同时将已识别数据元素的值从示例性远程计算机系统110拷贝到示例性本地计算机系统102。例如,可能使得在软件代码106B的已标记区段108中识别的数据元素的值可从数据储存器114访问。示例性软件代码106A、106B的示例性已标记区段108是在软件代码106A、106B的软件开发过程期间标记的。
在所示示例中,已标记区段108识别示例性软件代码106A、106B所利用的相关数据元素(例如,关键数据元素)。例如,已标记区段108可能识别示例性软件代码106A、106B所使用的数据元素,其是仅示例性远程计算机系统110可访问的,诸如来自远程计算机系统110上的数据库的数据。识别其值将在调试之前被从示例性远程计算机系统110拷贝到示例性本地计算机系统102的相关数据元素允许本地计算机系统102自动地获得数据并执行示例性软件代码106A以获得通过在远程计算机系统110上执行示例性软件代码106B将获得的相同或类似结果。然后可以使用示例性调制程序104在示例性本地计算机系统102上调试示例性软件代码106A。
示例性远程计算机系统110上的示例性数据获取程序112在示例性调试程序104的示例性激活程序200请求时检索将被从示例性远程计算机系统110拷贝到示例性本地计算机系统102的数据元素。在图1的所示示例中,数据获取程序112从数据储存器114检索数据元素。在检索所请求的数据元素之后,示例性数据获取程序112促使检索到的数据元素被封装并经由示例性网络116发送到示例性本地计算机系统。替换地,可以任何其它方式来发送数据元素。
示例性数据储存器114是示例性远程计算机系统110上的文件或其它数据结构,其存储要从远程计算机系统110拷贝到示例性本地计算机系统102的数据元素。在所示示例中,软件代码106B的已标记区段108中的JAVA注释指定在已标记区段108中识别的数据元素的值,其将在软件代码106B在远程计算机系统110上执行的同时被存储在数据储存器114中。在示例性远程计算机系统110上的示例性软件代码106B的执行期间,软件代码106B中的数据元素(包括在已标记区段108中识别的数据元素)的值可能根据软件代码106B中的指令(包括,数据操纵)而改变。在所示示例中,随着在示例性软件代码106B的已标记区段108中识别的数据元素的值改变,JAVA注释促使示例性数据储存器114中的相应值也更新。由于将从示例性数据储存器114检索数据元素,所以示例性数据获取程序112在示例性软件代码106B在示例性远程计算机系统110上执行的同时从数据存储器114检索数据元素而不干扰软件代码106B的执行。
在某些示例中,数据储存器114是远程计算机系统110的堆场(heap),其是计算机系统上的存储区,其中存储了JAVA应用程序所使用的数据元素。在其它示例中,数据储存器114可以是远程计算机系统110的另一存储区和/或远程计算机系统110上的一个或多个寄存器或其它数据储存结构的组合,其中存储被传输到本地计算机系统102的数据元素。在前述示例中,在软件代码106B的已标记区段108中识别的数据元素被数据获取程序112从数据储存器114拷贝到本地计算机系统102。
在某些示例中,软件代码106A、106B不包括已标记区段108。在这些示例中,利用选择要从远程计算机系统110拷贝到本地计算机系统102的数据元素的其它方法,诸如向本地计算机系统102上的软件代码106A中手动地插入代码,手动地选择要从远程计算机系统110拷贝到本地计算机系统102的数据元素等等。
图2是图1的示例性调试程序104的示例性实施方式的框图。图2的示例性调试程序104包括激活程序200、数据代理202、编译程序204以及执行程序206。
图2的示例性激活程序200发起示例性本地计算机系统102与示例性远程计算机系统110之间的数据连接,并且进行用于远程计算机系统110将数据(例如,数据快照)传输到本地计算机系统102的请求。从示例性远程计算机系统110拷贝到示例性本地计算机系统102的数据包括用于在示例性软件代码106A的已标记区段108中识别的数据元素的值。在所示示例中,激活程序200指定在软件代码106B的已标记区段108中识别的哪些数据元素将被从远程计算机系统110拷贝到本地计算机系统102。在其它示例中,在激活程序202在本地计算机系统102与远程计算机系统110之间建立连接之后,激活程序200可命令远程计算机系统110将在软件代码106B的已标记区段108中识别的每个数据元素拷贝到本地计算机系统102。
示例性激活程序200在示例性软件代码106B在示例性远程计算机系统110上执行的同时执行上述动作而不中断远程计算机系统110上的软件106B的执行。响应于所请求数据从示例性远程计算机系统110到示例性本地计算机系统102的传输完成,示例性激活程序200关闭本地计算机系统102与远程计算机系统110之间的连接。在稍后的时间,可由示例性激活程序200建立新连接,并且可将已更新数据(例如,已更新数据快照)从远程计算机系统110传输到本地计算机系统102。
图2的示例性数据代理202是文件或其它数据结构,其存储从示例性远程计算机系统110拷贝到示例性本地计算机系统102的数据元素。当示例性软件代码106B在示例性远程计算机系统110上执行时,用来自可用于远程计算机系统110的源(诸如像远程计算机系统110上的数据库)的值填充软件代码106B中的某些数据元素。然而,当示例性软件代码106A在示例性本地计算机系统102上执行时,软件代码106A可能不可访问可用于示例性远程计算机110的资源,因为软件代码106A仅在到远程计算机系统110的连接关闭之后在本地计算机系统102上执行。替代地,当软件代码106A在示例性本地计算机系统102上执行时,示例性调试程序104用来自示例性数据代理202的值填充在示例性软件代码106A的已标记区段108中识别的适当数据元素。示例性本地计算机系统102上的示例性数据代理202中的数据充当用于示例性远程计算机系统110可访问的数据的代理。因此,示例性软件代码106A使用与示例性软件代码106B在远程计算机系统110上访问的相同数据在本地计算机系统102上执行。
在所示示例中,编译程序204在激活程序200关闭本地计算机系统102与远程计算机系统110之间的连接之后在本地计算机系统102上编译软件代码106A。在所示示例中,在编译期间,编译程序204在软件代码106A中的JAVA注释的位置处向软件代码106A中插入软件指令。在某些示例中,编译程序204可不编译软件代码106A(例如,在软件代码106A被预先编译的情况下和/或在软件代码106A以不需要编译以执行的编程语言、诸如脚本语言编写的情况下)。在某些示例中,通过市售软件应用程序EclipseTM或另一集成开发环境(IDE)来实现编译程序204。
在所示示例中,执行程序206在编译程序204编译软件代码106A之后和/或同时在本地计算机系统102上执行软件代码106A。在其它示例中,执行程序206在激活程序200关闭与远程计算机系统110的连接之后(例如,在软件代码106A不需要编译以执行的情况下)在本地计算机系统102上执行软件代码106A。在某些示例中,通过EclipseTM或另一IDE来实现执行程序206。
在示例性软件代码106A完成在示例性本地计算机系统102上的执行之后或者在软件代码106A在本地计算机系统102上执行的同时,可以识别软件代码106A中的错误和/或可以调试软件代码106A。在某些示例中,调试程序104提供用以帮助软件代码106A的修改以修正“bug”的工具。在某些示例中,在调试软件代码106A之后,将已调试软件代码106A拷贝到远程计算机系统来代替软件代码106B,使得本地计算机系统上的软件代码106A与远程计算机系统110上的软件代码106B相同。在某些示例中,在已执行软件代码106A修改本地计算机系统102上的数据代理202中的数据之后,将已修改数据存储在本地计算机系统102上,诸如在文件或数据库中,使得其稍后可以被检索。在其它示例中,在已执行软件代码106A在本地计算机系统102上修改数据代理202中的数据之后,已修改数据被存储到假对象(例如,NULL)且不能在稍后被检索。
虽然已在图1和2中图示出实现调试系统100的示例性方式,但可对图1和/或图2中所示的元素、过程和/或设备中的一个或多个进行组合、划分、重新布置、省略、消除和/或以任何其它方式实现。此外,示例性调试程序104、示例性数据获取程序112、示例性数据储存器114、示例性激活程序200、示例性数据代理202、示例性编译程序204、示例性执行程序206和/或更一般地图1的示例性调试系统100可用硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,可以用一个或多个电路、(一个或多个)可编程处理器、(一个或多个)专用集成电路((一个或多个)ASIC)、(一个或多个)可编程逻辑器件((一个或多个)PLD)、(一个或多个)微处理器、(一个或多个)硬件处理器和/或(一个或多个)现场可编程逻辑器件((一个或多个)FPLD)等来实现示例性调试程序104、示例性数据获取程序112、示例性数据储存器114、示例性激活程序200、示例性数据代理202、示例性编译程序204、示例性执行程序206和/或更一般地图1的示例性调试系统100中的任何一个。当将本专利的任何系统或装置权利要求理解成涵盖纯软件和/或固件实现时,从而将示例性调试程序104、示例性数据获取程序112、示例性数据储存器114、示例性激活程序200、示例性数据代理202、示例性编译程序204、示例性执行程序206和/或更一般地图1的示例性调试系统100中的至少一个明确地定义成包括有形计算机可读存储介质,诸如存储器、DVD、CD、Blu-ray等,其存储软件和/或固件。此外,示例性调试程序104、示例性数据获取程序112、示例性数据储存器114、示例性激活程序200、示例性数据代理202、示例性编译程序204、示例性执行程序206和/或更一般地图1的示例性调试系统100和/或可包括所示元素、过程和设备中的任何或全部中的超过一个。
图3图示出可以是示例性软件代码106A、106B的一部分的示例性JAVA注释说明300。图3的示例性JAVA注释说明可说明名为‘Marked(已标记)’的注释类型。图3的示例的线302使用‘Retention’命令来指定在运行时间将保持自定义‘Marked’注释,以允许在运行时间访问已标记元素。图3的示例的线304使用‘Target’命令来指定自定义‘Marked’注释适用于各方法。图3的示例的线306使用‘interface’命令来将自定义注释命名为‘Marked’。‘Marked’注释的定义可以指定例如用‘Marked’注释进行注释的所有元素将在JAVA代码正在执行的同时可用于外部应用程序。然后可在JAVA代码中利用‘Marked’注释来标记将从示例性远程计算机系统110拷贝到示例性本地计算机系统102以便在调试时使用的数据区段。通过使得已标记区段108的值在运行时间可用于外部应用程序和/或计算机系统,可以在示例性软件代码106B在示例性远程计算机系统110上执行的同时将运行时间期间的已标记区段的值拷贝到示例性本地计算机系统102。
图4和/或5是表示用于实现图1和/或图2的示例性调试系统100的示例性机器可读指令的流程图。在图4和/或5的示例性流程图中,机器可读指令包括用于由处理器执行的(一个或多个)程序,所述处理器诸如是在下面结合图6所讨论的示例性计算机600中所示的处理器612。可用存储在有型计算机可读存储介质(诸如CD-ROM、软盘、硬驱、数字多功能磁盘(DVD)、Blu-ray磁盘或与处理器612相关联的存储器)上的软件来体现(一个或多个)程序,但是整个程序和/或其一部分可以替代地由除处理器612之外的设备执行和/或用固件或专用硬件来体现。此外,参考图4和/或5中所示的流程图来描述(一个或多个)示例性程序,但可替换地使用实现图1的示例性调试系统100的许多其它方法。例如,可改变方框的执行顺序和/或可改变、消除或组合所述的某些方框。
如上所述,可使用存储在有形计算机可读存储介质上的已编码指令(例如,计算机可读指令)来实现图4和/或5的示例性过程,有形计算机可读存储介质诸如是硬盘驱动器、闪存、只读存储器(ROM)、紧凑式磁盘(CD)、数字多功能磁盘(DVD)、高速缓存器、随机存取存储器(RAM)和/或其中存储信息达任何持续时间(例如,达延长的时间段、永久地、短暂时刻、用于临时地缓冲和/或用于信息的高速缓存)的任何其它存储介质。如本文所使用的术语有形计算机可读存储介质被明确地定义成包括任何类型的计算机可读存储设备和/或磁盘且不包括传播信号。另外或替换地,可使用存储在非临时计算机可读介质上的已编码指令(例如,计算机可读指令)来实现图4和/或5的示例性过程,非临时计算机可读介质诸如是硬盘驱动器、闪存、只读存储器、紧凑式磁盘、数字多功能磁盘、高速缓存器、随机存取存储器和/或其中存储信息达任何持续时间(例如,达延长的时间段、永久地、短暂时刻、用于临时地缓冲和/或用于信息的高速缓存)的任何其它存储介质。如本文所使用的术语非临时计算机可读存储介质被明确地定义成包括任何类型的计算机可读存储设备和/或磁盘且不包括传播信号。如本文所使用的,当使用短语“至少”作为权利要求的前导中的过渡术语时,其以与术语“包括”为开放型的相同方式是开放型的。因此,在其前导中使用“至少”作为过渡术语的权利要求可包括除明确地在权利要求中叙述的那些之外的元素。
图4在示例性本地计算机系统102通过从示例性远程计算机系统110获取数据元素来发起调试时开始(方框402)。例如,调试程序104的数据代理202从远程计算机系统110获取相关的数据元素(例如,已标记数据元素)(方框402)。示例性本地计算机系统102(例如,执行程序206)然后在关闭本地计算机系统102与示例性远程计算机系统108之间的连接之后执行示例性软件代码106A(方框404)。示例性本地计算机系统102(例如,调试程序104)然后调试软件代码(方框406)且图4的示例性过程结束。
图5是表示用于实现图1和/或图2的示例性调试系统100的示例性机器可读指令的更详细流程图。图5在示例性激活程序200通过经由示例性网络116在示例性本地计算机系统102与示例性远程计算机系统110之间建立连接来发起调试时开始(方框502)。示例性激活程序200然后请求将在示例性软件代码106B的已标记区段108内识别的数据元素从示例性远程计算机系统110拷贝到示例性本地计算机系统102(方框504)。在示例性远程计算机系统110从示例性激活程序200接收到此请求之后,示例性数据获取程序112从示例性数据储存器114检索所请求数据元素的数据快照(方框506)。然后将检索到的数据快照拷贝到示例性本地计算机系统102上的示例性数据代理202(方框508)。响应于在示例性本地计算机系统102上的示例性数据代理202处接收到数据快照,示例性激活程序200终止示例性本地计算机系统102与示例性远程计算机系统110之间的连接(方框510)。
一旦示例性数据代理202从示例性远程计算机系统110接收到数据快照的拷贝,并且到远程计算机系统110的连接被关闭,则示例性调试程序104将示例性数据代理202中的数据元素的值加载到示例性软件代码106A的适当数据元素中(方框512)。然后使用从示例性数据代理202加载的数据来执行示例性本地计算机系统102上的示例性软件代码106A(方框514)。在某些示例中,远程计算机系统110上的软件代码106B在整个此过程中继续执行。由于示例性数据代理202中的数据是从示例性远程计算机系统110拷贝的,所以示例性本地计算机系统102上的示例性软件代码106A的执行将产生与远程计算机系统110上的示例性软件代码106B的执行相同的结果。通过关闭到示例性远程计算机系统110的连接,本地计算机系统102上的示例性软件代码106A的执行和调试不消耗远程计算机系统110的资源。
在示例性软件代码106A完成示例性本地计算机系统102上的执行之后和/或在软件代码106A正在执行的同时,调试软件代码106A(方框516)。在某些示例中,调试程序104提供用以帮助调试软件代码106A的工具。完全在示例性本地计算机系统102上执行示例性软件代码106A,并且在调试软件代码106A的同时不保持到示例性远程计算机系统110的数据连接。示例性调试系统100然后确定是否进行从示例性远程计算机系统110检索新的、附加和/或已更新数据的请求(方框518)。如果进行此类请求,则控制返回到方框502,并且在示例性本地计算机系统102与示例性远程计算机系统110之间建立新的连接。如果并未进行此类请求,则图5的示例性过程结束。
图6是能够执行图4和/或5的指令以实现图1的示例性调试系统100的处理器平台600的框图。处理器平台600可以例如是服务器、个人计算机、因特网设备、DVD播放器、CD播放器、Blu-ray播放器、游戏控制台、个人视频记录仪、智能电话、平板计算机、打印机或任何其它类型的计算设备。
本示例的处理器平台600包括处理器612。如本文所使用的,术语“处理器”指代能够执行机器可读指令的逻辑电路。例如,可以由来自任何期望家族或制造商的一个或多个微处理器或控制器来实现处理器612。
处理器612包括本地存储器613(例如,高速缓存器),并且经由总线618与包括易失性存储器614和非易失性存储器616的主存储器通信。可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其它类型的随机存取存储器件来实现易失性存储器614。可用闪存和/或任何其它期望类型的存储器件来实现非易失性存储器616。由存储器控制器来控制对主存储器614、616的访问。所示示例的处理器612向图1和2的调试程序104提供命令以实现调试程序。
处理器平台600还包括接口电路620。接口电路620可以由任何类型的接口标准(诸如以太网接口、通用串行总线(USB)和/或PCI快速接口)实现。
将一个或多个输入设备622连接到接口电路620。(一个或多个)输入设备622允许用户向处理器612中输入数据和命令。可以用例如键盘、鼠标、触摸屏、跟踪板、轨迹球、等点鼠标和/或语音识别系统来实现(一个或多个)输入设备。
还可将一个或多个输出设备624连接到接口电路620。可例如用显示设备(例如,液晶显示器、阴极射线管显示器(CRT)、打印机和/或扬声器)来实现输出设备624。接口电路620因此通常包括图形驱动程序卡。
接口电路620还包括通信设备,诸如调制解调器或网络接口卡,以促进经由网络626(例如,以太网连接、数字订户线(DSL)、电话线、同轴电缆、蜂窝状电话系统等)与外部计算机的数据交换。在所示示例中,可使用网络626来实现图1的示例性网络116。
处理器平台600还包括用于存储软件和数据的一个或多个大容量存储器件628。此类大容量存储器件628的示例包括软盘驱动器、硬驱磁盘、紧凑式磁盘驱动器和数字多功能磁盘(DVD)驱动器。
可将图6的已编码指令632存储在大容量存储器件528中、易失性存储器514中、非易失性存储器616中和/或诸如CD或DVD之类的可移动存储介质上。在所示示例中,可使用已编码指令632来实现图1的示例性软件代码106A。
虽然在本文中已公开了某些示例性装置、方法以及制品,但本专利的覆盖范围不限于此。相反地,本专利涵盖清楚地落在本专利的权利要求范围内的所有装置、方法以及制品。

Claims (15)

1.一种装置,包括:
激活程序,用以在第一计算机系统与第二计算机系统之间建立连接;
数据获取程序,用以经由该连接将第一组数据元素的值从第二计算机系统传输到第一计算机系统; 
执行程序,用以在连接关闭之后使用传输的第一组数据元素的值在第一计算机系统上执行第一软件代码;以及 
调试程序,用以在所述执行程序在第一计算机系统上执行第一软件代码之后在第一计算机系统上调试第一软件代码。
2.如权利要求1所述的装置,其中,所述第一软件代码包含第一组数据元素,并且使用代码注释在第一软件代码中标记该第一组数据元素。
3.如权利要求1所述的装置,其中,所述第二计算机系统响应于所述激活程序关闭第一计算机系统与第二计算机系统之间的连接而执行第一软件代码。
4.如权利要求1所述的装置,其中,在所述调试程序调试第一软件代码之后,所述激活程序重新建立连接,并且所述数据获取程序将第一组数据元素的已更新值传输到第一计算机系统以用于再次地调试第一软件代码。
5.如权利要求1所述的装置,其中,用JAVA编程语言编写第一软件代码。
6.一种方法,包括:
在第一计算机系统与第二计算机系统之间建立连接,其中,所述第一计算机系统和所述第二计算机系统包含第一软件代码,并且其中,所述第一软件代码包含第一组数据元素; 
经由该连接从第二计算机系统获取第一组数据元素的值;
在第一计算机系统与第二计算机系统之间的连接被关闭之后,使用第一组数据元素的值在第一计算机系统上执行第一软件代码;以及 
在第一计算机系统上执行第一软件代码之后,在第一计算机系统上调试第一软件代码。
7.如权利要求6所述的方法,其中,离线执行所述调试。
8.如权利要求6所述的方法,还包括响应于关闭第一计算机系统与第二计算机系统之间的连接而在第二计算机系统上执行软件代码。
9.如权利要求6所述的方法,还包括将已调试软件代码从第一计算机系统拷贝到第二计算机系统。
10.如权利要求6所述的方法,还包括在调试第一软件代码之后重新建立该连接以从第二计算机系统获取第一组数据元素的已更新值,从而再次地调试第一软件代码。
11.一种有形机器可读存储介质,包括指令,该指令在被执行时促使第一计算机系统至少:
从第二计算机系统获取第一组数据元素的值;
响应于第一计算机系统与第二计算机系统之间的连接的关闭,使用第一组数据元素的值在第一计算机系统上执行第一软件代码;以及 
在第一计算机系统上执行第一软件代码之后在第一计算机系统上调试第一软件。
12.如权利要求11所述的存储介质,其中,使用JAVA注释来标记第一组数据元素。
13.如权利要求11所述的存储介质,其中,所述指令在被执行时促使第一计算机系统将已调试软件代码从第一计算机系统拷贝到第二计算机系统。
14.如权利要求11所述的存储介质,其中,所述指令在被执行时促使第一计算机系统从所述第二计算机系统获取第一组数据元素的已更新值以便再次地在调试第一软件代码时使用。
15.如权利要求11所述的存储介质,其中,用JAVA编程语言来编写第一软件代码。
CN201380072013.3A 2013-01-31 2013-01-31 用于远程系统调试的方法和装置 Active CN104937560B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/024116 WO2014120200A1 (en) 2013-01-31 2013-01-31 Methods and apparatus for debugging of remote systems

Publications (2)

Publication Number Publication Date
CN104937560A true CN104937560A (zh) 2015-09-23
CN104937560B CN104937560B (zh) 2018-04-10

Family

ID=51262764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380072013.3A Active CN104937560B (zh) 2013-01-31 2013-01-31 用于远程系统调试的方法和装置

Country Status (4)

Country Link
US (1) US9720803B2 (zh)
EP (1) EP2951698A4 (zh)
CN (1) CN104937560B (zh)
WO (1) WO2014120200A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318403B2 (en) 2016-05-17 2019-06-11 International Business Machines Corporation Code update based on detection of change in runtime code during debugging
US10162730B2 (en) 2017-01-24 2018-12-25 Dell Products, L.P. System and method for debugging software in an information handling system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1408410A1 (en) * 2002-09-30 2004-04-14 Sap Ag Remote debugging of computer programs
US7673180B1 (en) * 2005-05-05 2010-03-02 Sun Microsystems, Inc. Method and apparatus for dispatching a remote debugging agent in a distributed computing environment
US20110004790A1 (en) * 2007-12-21 2011-01-06 Albert Rossmann Asynchrony Debugging Using Web Services Interface
US20120102468A1 (en) * 2010-10-20 2012-04-26 International Business Machines Corporation Registration-based remote debug watch and modify

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630049A (en) * 1994-11-30 1997-05-13 Digital Equipment Corporation Method and apparatus for testing software on a computer network
US5892941A (en) * 1997-04-29 1999-04-06 Microsoft Corporation Multiple user software debugging system
WO2002023344A2 (en) * 2000-09-15 2002-03-21 Wind River Systems, Inc. System and method for communicating software debug, diagnostic and maintenance information between devices
US7873872B1 (en) 2001-07-10 2011-01-18 Versata Development Group, Inc. System and method for remotely debugging application programs
US7543277B1 (en) 2003-06-27 2009-06-02 American Megatrends, Inc. Method and system for remote software debugging
US7216257B2 (en) * 2004-01-21 2007-05-08 Sap Ag Remote debugging
US20050216895A1 (en) 2004-03-23 2005-09-29 Tran Hieu T Method and apparatus for remote debugging of kernel and application software
US20060174225A1 (en) 2005-02-01 2006-08-03 International Business Machines Corporation Debugging a High Level Language Program Operating Through a Runtime Engine
GB0513185D0 (en) * 2005-06-30 2005-08-03 Ibm A method system and software tool for emulating a portal application
US7783799B1 (en) * 2006-08-31 2010-08-24 American Megatrends, Inc. Remotely controllable switch and testing methods using same
US8015201B1 (en) 2007-02-22 2011-09-06 Netapp, Inc. Servicing daemon for live debugging of storage systems
KR101060181B1 (ko) * 2009-08-03 2011-08-29 강원대학교산학협력단 원격 디버깅을 위한 웹 기반 소프트웨어 디버깅 장치 및 그 방법
US8621118B1 (en) * 2010-10-20 2013-12-31 Netapp, Inc. Use of service processor to retrieve hardware information
US9292395B2 (en) * 2010-12-07 2016-03-22 Nec Corporation Debug stub server, debug method, and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1408410A1 (en) * 2002-09-30 2004-04-14 Sap Ag Remote debugging of computer programs
US7673180B1 (en) * 2005-05-05 2010-03-02 Sun Microsystems, Inc. Method and apparatus for dispatching a remote debugging agent in a distributed computing environment
US20110004790A1 (en) * 2007-12-21 2011-01-06 Albert Rossmann Asynchrony Debugging Using Web Services Interface
US20120102468A1 (en) * 2010-10-20 2012-04-26 International Business Machines Corporation Registration-based remote debug watch and modify

Also Published As

Publication number Publication date
US20150370686A1 (en) 2015-12-24
EP2951698A4 (en) 2016-10-05
EP2951698A1 (en) 2015-12-09
WO2014120200A1 (en) 2014-08-07
CN104937560B (zh) 2018-04-10
US9720803B2 (en) 2017-08-01

Similar Documents

Publication Publication Date Title
US9983892B2 (en) Deep linking to mobile application states through programmatic replay of user interface events
US9819758B2 (en) Remote debugging into mobile web applications across devices
US9176848B2 (en) Program debugger and program debugging
US10929149B2 (en) Method and system for updating firmware
US8612943B2 (en) Data transmission program, data transmission apparatus, and method for editing operation manual
CN109669873B (zh) 用户界面自动测试方法及装置、电子设备及存储介质
US9516094B2 (en) Event-responsive download of portions of streamed applications
US9286142B2 (en) Methods and systems for supporting a rendering API using a runtime environment
US9092570B2 (en) Memory management for remote software debuggers and methods
US10814229B2 (en) Fragment-based mobile device application streaming utilizing crowd-sourcing
US9639343B2 (en) Method for altering execution of a program, debugger, and computer-readable medium
EP2869195B1 (en) Application coordination system, application coordination method, and application coordination program
WO2019047510A1 (zh) IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统
CN104937560A (zh) 用于远程系统调试的方法和装置
WO2019136843A1 (zh) 安卓系统中启动页面的方法、存储介质、设备及系统
US10140278B2 (en) Computer-implemented methods and systems for associating files with cells of a collaborative spreadsheet
CN108614704B (zh) 代码编译方法及装置
JP2009015428A (ja) プログラム更新方法、情報処理装置、プログラムおよび記録媒体
US20220012049A1 (en) Synchronization of Source Code Under Development in Multiple Concurrent Instances of an Integrated Development Environment
JP6717140B2 (ja) 解析プログラム、解析方法、及び解析装置
CN108985014A (zh) 一种导出保护游戏中的Python字节码文件的方法及装置
CN109144524B (zh) 一种教育平台上学科游戏的版本发布方法及电子设备
US11275875B2 (en) Co-simulation repeater with former trace data
KR101556831B1 (ko) 애플리케이션 개발을 위한 퍼미션 입력 방법 및 안드로이드 애플리케이션을 제작하는 방법을 실행시키기 위한 프로그램이 기록한 컴퓨터로 읽을 수 있는 기록 매체
JP2012133567A (ja) 情報処理装置、情報処理装置の制御方法、プログラム。

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170122

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, L.P.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180613

Address after: American California

Patentee after: Antite Software Co., Ltd.

Address before: American Texas

Patentee before: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Utah, USA

Patentee after: Weifosi Co., Ltd

Address before: California, USA

Patentee before: Antiy Software Co.,Ltd.