CN105791385B - 用于控制两个或多个远程会话的方法和系统 - Google Patents

用于控制两个或多个远程会话的方法和系统 Download PDF

Info

Publication number
CN105791385B
CN105791385B CN201610012112.8A CN201610012112A CN105791385B CN 105791385 B CN105791385 B CN 105791385B CN 201610012112 A CN201610012112 A CN 201610012112A CN 105791385 B CN105791385 B CN 105791385B
Authority
CN
China
Prior art keywords
difference
session
data
remote
debugging
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.)
Active
Application number
CN201610012112.8A
Other languages
English (en)
Other versions
CN105791385A (zh
Inventor
A.S.博克索尔
J.T.管
R.H.E.佩特
T.T.马克汉姆
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN105791385A publication Critical patent/CN105791385A/zh
Application granted granted Critical
Publication of CN105791385B publication Critical patent/CN105791385B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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
    • 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/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

根据本发明的实施例,提供了用于控制两个或多个远程会话的机器、系统、方法和计算机程序产品。同步两个或多个远程会话以使用共同的界面控制每个会话。使用所述共同的界面在基本上相同的时间处将一个或多个可执行的命令发送给每个远程会话以控制该远程会话的操作。接收并且分析从执行所述命令由每个远程会话产生的数据以识别由每个远程会话产生的数据中的一个或多个差异。在所述数据中的一个或多个识别的差异显示在所述共同的界面上。可以提供关于由每个远程会话产生的所述数据中的差异的可能的根本原因的指示。每个远程会话包括程序调试会话。可以产生包括所述数据中的一个或多个识别的差异的报告。

Description

用于控制两个或多个远程会话的方法和系统
技术领域
本发明实施例涉及在不同的平台中的程序执行,并且更具体地,涉及同时控制和链接用于比较程序执行的两个或多个调试会话。
背景技术
将软件移植到运行在相同的操作系统(OS)上的新的硬件(例如,从x86Linux移动到Power Linux或Linux on z等)的开发者通常面临解决在新的平台上的执行差异的挑战。
开发者可以通过将在新的平台上运行的对象编译的代码或二进制可执行文件的行为与在参考平台上运行的对象编译的代码或二进制可执行文件的行为进行比较来诊断在新的平台上的执行问题。尽管该过程允许开发者隔离运行时问题,但是该过程是手动驱动的,其中开发者通常在调试器中查看每个可执行文件并且并行检查每个过程。经常地,开发者对关于独立控制两个调试会话的无数细节,并且还手动地保持对在变量、寄存器或存储器中的差异保持跟踪感到不堪重负。
发明内容
根据本发明的实施例,提供了用于同时控制并且链接/同步两个或多个远程会话的机器、系统、方法和计算机程序产品。每个远程会话可以包括程序调试会话。例如使用诸如运行在客户端系统上的客户端调试引擎的应用同步两个或多个远程会话,以使用共同的界面控制每个会话。使用所述共同的界面在基本上相同的时间处将一个或多个可执行的命令发送到每个远程会话以控制该远程会话的操作。从执行所述命令由每个远程会话产生的数据被接收和分析以识别由每个远程会话产生的数据中的一个或多个差异。在所述数据中的一个或多个识别的差异被显示在共同的界面上。
相应地,本发明实施例包括简化和自动化调试过程。通过以同步的方式通过客户端系统控制多个调试过程,相比于在单独的平台上手动地执行每个调试过程并且手动地比较由程序执行产生的数据,用户可以以更有效的方式识别和解决程序执行问题。本发明实施例还允许自动检测程序执行中的差异。
在优选实施例中,可以提供由客户端调试引擎产生的指示,所述指示关于由每个远程会话产生的所述数据中的差异的可能的根本原因。提供关于数据中的差异的可能的根本原因的指示可以加速解决在程序执行中的变化的原因。可选地,可以产生包括在所述数据中的一个或多个识别的差异的报告。
在其它优选实施例中,数据可以包括寄存器值、指针值、贮存在存储器中的值等的一个或多个。通过监控与程序执行有关的或者由程序执行产生的数据,例如,寄存器值、存储器、指针值等,可以快速地识别在程序执行中的特定位置处的平台执行中的特定差异。
在其它优选实施例中,可以过滤数据以基于识别的差异的子集的已知的原因在识别的差异的更大的集合中识别出识别的差异的子集。通过过滤数据以在识别的差异的更大的集合中识别出识别的差异的子集,可以加速并且简化在程序执行中差异的识别和在一些情况中差异的解决。
其它优选实施例包括由所述共同的界面的用户产生可执行的命令。这样的配置允许多个调试过程的统一的控制,例如,由用户发布的单个命令可以被应用到每个调试过程以同步调试过程并且加速开发周期。在其它优选实施例中,每个远程会话包括程序调试会话。可选地,可执行的命令可以以批处理文件的形式提供。通过以批处理模式进行程序执行,可以产生并且集体地分析来自不同的计算平台的数据,进一步加速开发过程。
将参考附图和这里的详细描述理解本发明的这些和其它方面、特征和实施例,并且将以在所附权利要求中特别指出的各种元件和组合的方式实现本发明的这些和其它方面、特征和实施例。将理解的是,前述一般描述和以下对附图的简单说明和具体实施方式两者仅是本发明的优选实施例的示例和解释,而不是对所要求的本发明实施例的限制。
附图说明
一般来说,在各个附图中的相同参考标号用于指定相同组件。
图1A是示出根据本发明的实施例用于在不同的平台之上控制程序执行的示例计算环境的示意图。
图1B示出了根据本发明的实施例的用于比较在不同的平台之上的程序执行中的差异的示例客户端系统架构的示意图。
图1C示出了根据本发明的实施例的用于在不同的平台之上控制程序执行的示例服务器系统架构的示意图。
图2A是示出根据本发明的实施例,在用户交互式模式中,比较在不同的平台之上的程序执行的程序性的流程图的示例。
图2B是示出根据本发明的实施例,在批处理模式中,比较在不同的平台之上的程序执行的程序性的流程图的示例。
图3是示出根据本发明的实施例的用于显示在不同的平台之上控制和链接调试会话的各种方面的用户界面(UI)的示例的示意图。
具体实施方式
本发明实施例自动地链接和控制或同步运行在不同的平台上的两个调试会话,并且自动地比较并且检测程序执行中的差异。这可以通过交互式地比较来自调试会话的每一个的数据来实现,例如,通过用户单步调试可执行的文件;或者非交互式地比较来自调试会话的每一个的数据来实现,例如,通过用户以批处理模式执行对象编译的代码或二进制可执行文件。本发明实施例允许用户快速地并且容易地以自动的方式识别由于将应用移植到相比于原始环境具有不同的平台的环境而引起的执行中的行为差异。现有技术需要用户在选择的环境中手动地执行每个调试会话,并且手动地监视和识别程序执行中的差异,由于可能需要跟踪大量的变量以便于识别差异,所以这是耗时同时费力的过程。此外,本发明实施例允许自动检测在不同的平台上的程序执行中的差异,从而节约时间并且简化调试过程。
在优选实施例中,还可以提供由在参考平台和一个或多个其它平台之间的程序执行中的差异引起的数据中的差异的可能的根本原因的指示。提供这样的指示可以进一步加速调试过程,允许已知的差异被快速地识别和解决。
在其它优选实施例中,对应于程序执行期间由于已知的原因引起的数据中的差异的识别的差异可以从识别的差异的更大的集合之中被过滤出,以产生差异的较小的子集,从而将识别的差异减少到差异的较小子集以进一步加速调试过程。
在其它优选实施例中,可执行的命令可以由共同的界面的用户产生并且应用到在每个远程环境中的每个调试过程。这样的配置允许多个调试过程的统一的控制,从而节约时间并且进一步简化调试过程.
在图1A中示出了与本发明实施例一起使用的示例环境。具体地,所述环境包括一个客户端或终端用户系统110以及两个或多个服务器系统130。服务器系统130和客户端系统110可以相互处于远程并且在网络125之上通信。网络可以通过任何数量的任何合适的通信介质(例如,广域网(WAN)、局域网(LAN)、因特网、内联网等)实现。可替换地,服务器系统130和客户端系统110可以相互处于本地,并且通过任何合适的本地通信介质(例如,局域网(LAN)、硬件、无线链接、内联网等)通信。在其他实施例中,服务器系统130可以位于云计算环境中,由客户端系统110远程地访问。
所理解的是,尽管这里提供的示例指同时运行的两个调试过程,但是这些示例并不意欲是限制性的。在额外的实施例中,可以同时运行任何数量的调试过程,并且将结果与指定的参考比较并且相应地分析。
客户端系统110使得用户能够以例如步进、断点、向内步进、向外步进等的交互式模式或者以批处理文件模式提交命令到两个或多个服务器系统130以用于在具有不同的平台的两个或多个不同的计算环境中的命令执行。客户端系统110包括用户界面(UI)115,所述用户界面(UI)115使能两个或多个不同的计算环境的选择和链接,以及显示在交互式模式或批处理模式中与客户端调试引擎120相关联的过程的方面。客户端侧调试引擎120建立与选择的两个或多个远程调试会话的链接,将命令发送到托管选择的调试会话的每个服务器130,并且从每个调试会话接收结果。服务器系统130包括服务器侧调试引擎135,所述服务器侧调试引擎135与客户端调试引擎通信,以进行从客户端调试引擎接收的命令并且将执行的命令的结果发送到客户端110。客户端系统110和服务器130两者可以包括用于在网络125之上通信的网络接口卡(NIC)140。
在优选实施例中,单机数据库系统150(可选的)可以贮存用于比较和分析由每个服务器调试会话返回的结果(例如,变量、贮存在寄存器中的值等)的各种信息。数据库系统可以由任何传统的或其它数据库或贮存单元实现,所述数据库系统可以与服务器系统130和客户端系统110处于本地或远程,并且可以通过任何合适的通信介质(例如,局域网(LAN)、广域网(WAN)、因特网、硬件、无线链接、内联网等)通信。
客户端系统110可以呈现图形用户(例如,GUI等)或其它界面(例如,命令行提示、菜单屏幕等)以从属于期望的对象编译的代码或二进制执行文件和分析的用户请求命令和指令,并且可以提供包括分析结果的报告(例如,贮存在寄存器中的值、变量、在两个环境之间的对象编译的代码或二进制执行文件中的差异的原因等)。
参考图1B,提供了客户端系统110架构的示例。客户端系统110可以由任何传统的或其它计算机系统实现,所述计算机系统优选地具备显示器或监视器170、用户界面115、基底(base)(例如,包括至少一个处理器155、一个或多个存储器160和/或内部或外部网络接口或通信装置140(例如,调制解调器,网卡等))、可选的输入装置175(例如,键盘、鼠标或其它输入装置)以及任何商业上可用的和定制软件(例如,服务器/通信软件、客户端调试引擎、浏览器/界面软件等)。客户端调试引擎120可以包括计算机可读指令,所述指令可以贮存在存储器160中,或者作为独立的存储器(如这里所示),所述指令包括用于以交互式或批处理模式操作的逻辑180以及用于比较结果并且分析结果以提供结果中的差异的可能的原因的逻辑195。在优选实施例中,可以包括异常或者“可允许的差异”文件165,包括在平台执行中的差异的已知的原因,例如,文件数量、寄存器的大小等。
参考图1C,提供了服务器系统130架构的示例。服务器系统130可以由任何传统的或其它计算机系统实现,所述计算机系统优选地具备基底(例如,包括至少一个处理器157、一个或多个存储器162和/或内部或外部网络接口或通信装置140(例如,调制解调器、网络卡等))以及任何商业上可用的和定制软件(例如,服务器/通信软件、服务器调试引擎等)。服务器调试引擎135可以包括计算机可读指令,所述指令可以贮存在存储器162中,或者作为独立的存储器(如这里所示),所述指令包括用于以交互式或批处理模式操作并且执行由客户端系统110提供的指令的逻辑190。
参考图2A,示出了用于自动地链接和控制或同步运行在单独的平台上的两个远程调试过程并且以交互式的方式自动地检测差异(例如,通过调试引擎120、135、服务器130和/或客户端110)的示例流程图。这允许在每个调试会话中的每个可执行文件作为单个主体而不是多个独立的过程被控制,并且由于用户单步调试程序,所以提供从每个调试器自动检测数据中的差异的能力。
在操作210处,用户选择一个或多个调试会话以链接。在一些实施例中,用户可以使用客户端系统110的UI 115从移植平台选择调试会话和从参考平台选择调试会话,并且将两者链接。在一些方面中,可以使用客户端系统110和服务器130之间的握手协议进行链接,托管所选择的调试会话以用于建立被控制的每个调试会话的连接。一旦调试会话被链接,在操作215处建立同步关系。链接通常指在UI和平台上的指定调试会话之间的通信路径,所述通信路径通常由用户设置,例如,使用传输控制协议(TCP)连接。同步通常指处于相同的开始状态或相同的已知状态中的调试会话,例如,在程序执行之前的程序的开始,执行一部分的代码并且使用停止命令在到达代码中的特定位置时停止等。例如,客户端系统110可以发送以下命令到服务器130以建立同步:(1)在开始位置(例如,程序输入点)或在程序代码中的另一定义的位置处设置断点,以及(2)运行/执行代码直到到达断点。调试会话将随后被同步使得所有的会话在相同的断点或程序代码中的位置处停止。
在操作220处,使用UI,现在管理例如参考平台和软件被移植到的平台的两个或多个调试会话的客户端调试引擎可以被用于同时控制所有链接的调试会话并且从所有的会话收集数据。例如,使用UI,用户可以输入命令以在调试器中单步调试可执行的代码,可以在调试器中设置断点等,所述调试器可以被同时应用到所有的远程调试会话。
在操作225处,命令被发送到每个远程调试会话以用于执行。在操作230处,接收来自每个远程调试会话的结果。在一些实施例中,例如,在执行随后的命令之前,客户端系统将确认已经从每个远程调试会话接收到消息。
一旦从所有的调试会话接收到消息,将在操作235处分析这些消息的对应的有效负荷。在优选实施例中,为在执行中的差异监控的例如,变量、指针值、寄存器值、存储器内容等的数据可以在每个步进、断点或任何其它类型的调试操作处自动地比较。例如,如步进命令的命令可以在客户端系统110处发布并且通信到每个远程服务器系统调试引擎135。可以在每个服务器130处执行所述步进命令,并且关于在每个平台中的应用的状态的结果被通信回到客户端110。断点可以以类似的方式通信。调试命令的其它示例包括运行、停止、继续、步进跳过、步进进入等。可以监控的数据的其它示例包括在堆栈上的本地变量的状态、应用的寄存器值、诸如指针值的存储器的特定区域的状态等。
本发明实施例的优点包括在单步调试程序时自动地检测由在不同的开发平台上执行程序引起的数据中的差异的能力。相反,现有技术使用户需要在程序执行期间手动地比较每个变量、寄存器、存储器状态等以便手动地识别差异。
在操作240处,在操作235处自动地检测的在可执行文件之间的差异可以通过UI被突出和显示。
在优选实施例中,为解决由于已知的平台差异的行为中的期望的小差异,例如,编译器分配不同的行号或浮点数的不同表示等,可以构建可允许的差异文件165以解决已知的差异。可以在分析期间利用该文件以识别由除了已知的差异以外引起的差异,从而过滤出从已知的原因引起的差异。通过过滤数据以识别不具有已知的原因的识别的差异的子集,可以加速在程序执行中的差异的原因的识别和解决。
操作245提供在同步的共同环境中的优选实施例的示例,其中在报告中或者通过共同的界面提供关于属于在程序执行中的差异的可能的根本原因的指示。例如,在可执行运行的最后,可以自动产生总结结果并且提供提示和建议的报告,和关于在执行中的差异的可能的根本原因的指示。指示可以从参考平台和测试平台之间的已知的差异的池中选择。例如,当从一个机器向另一个移植时,位次序可以导致代码执行中的差异。从诸如x86Linux的小字节存储次序(endian)机器向诸如Linux on z的大字节存储次序(endian)机器的移植可以引起位次序差异,导致监控的数据中的差异。此外,其它差异可以包括寄存器的大小,例如32位或64位,这也可以被确定为程序执行中的差异的可能的根本原因。提供数据中的差异的可能的根本原因的指示可以加速识别和解决程序执行中的变化,并且导致没有已知的原因的执行差异的快速识别。一旦识别,这些差异可以包括在可允许的差异文件中。
在其它实施例中,并且如图2B中所示,两个或多个调试会话可以以批处理模式运行,所述批处理模式与用户非交互式地运行,并且相反,在对象编译的代码或二进制执行文件的最后提供结果(例如,通过调试引擎120、135、服务器130和/或客户端110)。
类似于操作210,在操作250处,用户选择一个或多个调试会话以链接。在一些方面中,链接可以使用客户端系统110和托管选择的调试会话的每个服务器130之间的握手协议进行,以用于建立被控制的每个调试会话的连接。一旦链接调试会话,在操作255处建立同步关系,类似于操作215。
客户端调试引擎管理两个或多个调试会话,并且可以被用于同时控制所有链接的调试会话并且从所有的会话收集数据。在操作260处,可以同时作为批处理过程的一部分发送命令到所有的远程调试会话。
在操作265处,一旦每个远程调试会话已经执行了批处理文件,结果将被封装并且在消息中提供给客户端系统110。在消息的有效负荷中的结果包括执行的所有结果,例如,变量、存储器状态等。在一些实施例中,客户端系统110将确认已经从每个远程调试会话接收到消息。
一旦已经从每个调试会话接收到数据,在操作270处,将分析对应的消息有效负荷。被监视以用于执行中的差异的数据,例如,变量、寄存器、存储器内容等,可以被自动地比较和识别。类似于操作245,可以在操作275处将差异通过UI或者通过产生的报告向用户显示。对应地,本发明实施例提供使用共同的界面在远程环境中执行一个或多个程序的技术。一旦程序执行完成,数据可以被提供回共同的界面,并且自动地分析数据以在程序执行中识别差异。在优选实施例中,可以通过UI显示或者在报告中提供结果。本发明实施例的优点包括相比于利用手动驱动、费力的过程的当前技术,以自动的方式快速地识别程序执行中的差异。
在优选实施例中,为解决由于已知的平台差异的行为中的期望的小差异,例如,编译器分配不同的行号或浮点数的不同表示等,可以构建可允许的差异文件165以解决已知的差异。该文件可以被用于识别由除了已知的差异以外引起的差异。
图2A和2B提供通过客户端系统以同步的方式控制多个调试程序的示例。使用这样的技术,相比于手动地执行每个调试过程,用户可以以更加有效的方式识别和解决程序执行问题。本发明实施例还提供用于共同的环境以同步运行在不同的平台上的调试过程。替代于独立地执行每个调试过程,其导致用户在程序执行中的各个阶段手动地跟踪大量的变量以识别差异,本发明实施例允许其中调试环境可以被同步的共同的界面并且数据中的差异被识别和选择以显示在所述共同的界面中。
关于在图1A-1C和2A-2B中提供的示例,指针值和浮点数中的差异通常在不同的平台之间出现。
一般来说,调试引擎可以识别指针类型的变量以排除对原始的指针值的直接比较,因为这些值将是取决于系统的。相反,本发明实施例将解除引用指针以建立指针所指向的值,以便于进行对解除引用的值的比较。例如,如果指针指向某个类型的结构,将在链接的引擎而不是指针的值之上比较相应的结构的值。在其它实施例中,指针可以引用其它指针,并且用户可以在可允许的差异文件中指明对给定指针解除引用到多少级深。
差异的另一区域在于处理不同的平台之间的浮点数。例如,不同的平台可以对值进行不同的四舍五入以产生值中的差异。在这样的情况中,可允许的差异文件可以包括建立用于比较浮点值的精度的信息。
作为示例,可允许的差异文件可以包括在纯文本文件中的关键值编码格式,例如,浮点变化=0.01(指示如果所述值相互差异的0.01%内,则两个浮点值被认为是相同的);以及最大深度指针级比较=4(将指针的解除引用限制到四级深)。在其他实施例中,用户可以建立值的可允许的范围以用于比较。
在其它实施例中,用户可以在自身的数据比较过程期间自动地增加排除。例如,当会话识别检测的差异时,对于已知的差异,差异可以被突出并且用户可以将差异标记为“可允许的”或“忽略”。因此,用户可以交互式地训练工具以区分平台之间的期望的/预测的差异和真正的差异。
图3示出了UI的示例。在区310处,示出了调试控制视图,其中每个调试会话可以被选择和链接。在区320处,可以设置调试操作,例如,断点操作,并且将调试操作应用到每个调试会话。示出了断点以及设置共同的断点并且确定何时到达断点的能力。在一些实施例中,用户可以明确地指明比较哪一个或多个点,例如,在每个模块负载和每个模块输入点处,或者在给定模块中的任何点处,以实现关于数据的逐行比较的任何期望的粒度。
在区330处,在相应的视图区域中命令被示出为在每个调试会话中同时执行。在组件340处,显示了自动识别的监控的数据中的差异。
各种模块(例如,客户端调试引擎、服务器调试引擎等)可以包括一个或多个模块或单元以进行下面描述的本发明实施例的各种功能。各种模块(例如,客户端调试引擎、服务器调试引擎)可以通过任何数量的软件和/或硬件模块或单元的任何组合实现,并且可以位于用于由一个或多个处理器执行的服务器和/或客户端系统的存储器中。
将理解的是,以上描述的并且在附图中示出的实施例仅表示实现同时控制和链接两个或多个调试会话以用于比较程序执行的实施例的许多方式中的几个。
本发明实施例的环境可以包括以任何期望的方式布置的任何数量的计算机或其它处理系统(例如,客户端或终端用户系统110、服务器系统130等)和数据库150或其它储存库,其中本发明实施例可以被应用到任何期望类型的计算环境(例如,云计算、客户端-服务器、网络计算、大型主机、单机系统等)。本发明实施例所采用的计算机或其它处理系统可以通过任何数量的任何个人或者其它类型的计算机或处理系统(例如,桌上型计算机、膝上型计算机、PDA、移动装置等)实现,并且可以包括任何商业上可用的操作系统和商业上可用的和定制软件的任何组合(例如,浏览器软件、通信软件、服务器软件、调试引擎等)。这些系统可以包括任何类型的监视器170和输入装置175(例如,键盘、鼠标、语音识别等)以输入和/或查看信息。
将理解的是,本发明实施例的软件(例如,客户端调试引擎120和服务器调试引擎135)可以以任何期望的计算机语言实现,并且可以由计算机领域中的普通技术人员基于包含在说明书中的功能性描述和在附图中示出的流程图而开发。此外,这里对进行各种功能的软件的指代一般指在软件控制之下进行那些功能的计算机系统或处理器。本发明实施例的计算机系统可以可替换地由任何类型的硬件和/或其它处理电路实现。
计算机或其它处理系统的各种功能可以在任何数量的软件和/或硬件模块或单元、处理或计算机系统和/或电路之中以任何方式分布,其中计算机或处理系统可以相互本地地或者远程地布置并且通过任何合适的通信介质(例如,LAN、WAN、内联网、因特网、硬线、调制解调器连接、无线等)通信。例如,本发明实施例的功能可以在各种终端用户/客户端110和服务器系统130、和/或任何其它中间的处理装置之中以任何方式分布。以上描述并且在流程图中示出的软件和/或算法可以以实现这里所述的功能的任何方式被修改。此外,可以以实现期望的操作的任何次序进行流程图或说明中的功能。
本发明实施例的软件(例如,客户端调试引擎和服务器调试引擎)可以在与单机系统或通过网络或其它通信介质连接的系统一起使用的固定的或便携式的程序产品设备或装置的非瞬时性计算机可用介质(例如,磁或光介质、磁光的介质、软盘、CD-ROM、DVD、存储器装置等)上是可用的。
通信网络可以由任何数量的任何类型的通信网络(例如,LAN、WAN、因特网、内联网、VPN等)实现。本发明实施例的计算机或其它处理系统可以包括任何传统的或其它通信装置以通过任何传统的或其它协议在网络之上通信。计算机或其它处理系统可以利用任何类型的连接(例如,有线、无线等)以用于访问网络。本地通信介质可以由任何合适的通信介质(例如,局域网(LAN)、硬线、无线链接、内联网等)实现。
系统可以采用任何数量的任何传统的或其它数据库、数据存储或贮存结构(例如,文件、数据库、数据结构、数据或其它储存库等)以贮存信息(例如,作为对象编译的代码或二进制执行文件的部分产生的数据)。数据库系统可以由任何数量的任何传统的或其它数据库、数据存储或贮存结构(例如,文件、数据库、数据结构、数据或其它储存库等)实现以贮存信息(例如,作为对象编译的代码或二进制执行文件的部分产生的数据)。数据库系统可以包括在服务器和/或客户端系统中或者耦接到服务器和/或客户端系统。数据库系统和/或贮存结构可以对于计算机或其它处理系统是远程的或者本地的,并且可以贮存任何期望的数据(例如,变量、寄存器值、指针值等)。
本发明实施例可以采用任何数量的任何类型的用户界面(例如,图形用户界面(GUI)、命令行、提示等)以用于获得或者提供信息(例如,作为对象编译的代码或二进制执行文件的部分产生的数据),其中界面可以包括以任何方式布置的任何信息。界面可以包括布置在任何位置处的任何数量的任何类型的输入或者致动机制(例如,按钮、图标、字段、框、链接等)以通过任何合适的输入装置(例如,鼠标、键盘等)输入/显示信息并且开始期望的动作。界面屏幕可以包括任何合适的致动器(例如,链接、标签等)来以任何方式在屏幕之间导航。
报告可以包括以任何方式布置的任何信息,并且可以是基于规则或其它条件可配置的以向用户提供期望的信息(例如,可允许的差异等)。
本发明实施例不限于上述特定的任务或算法,而是可以被用于涉及链接多个应用和监控数据的任何过程。例如,本发明实施例在其它调试环境中也可以是有益的,例如,在相同的平台上运行相同的指令以识别阻止应用的适当操作的硬件缺陷,诊断通过使用差异调试所引入的回归以比较在相同的平台上的两个构建项目,检测具有不同的输入数据的在相同的平台上的相同的程序的两个示例之间的差异等。本发明实施例也可以被应用到两个或多个调试或其它会话、被应用到产生或显示的任何数据(例如,值、代码、变量、存储器等)、被应用到从共同的界面发布的任何命令的转换,以控制或者比较任何环境,并且以任何方式比较值以识别差异。本发明实施例也可以被用于识别对应的文件的任何文件格式中的已知的差异(例如,值、代码、变量、存储器等)。
这里所使用的术语仅是为了描述特定实施例的目的,而不意欲限制本发明。如这里所使用的,单数形式“一”、“一个”和“所述”意欲也包括复数形式,除非上下文清楚地另有说明。还将理解的是,当用在本说明书中时,术语“包括”、“包括有”、“包含”、“包含有”、“具有”、“具备”、“具备有”、“有”等指明所述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除其它特征、整数、步骤、操作、元件、组件和/或其组合的一个或多个的存在或增加。
在下面的权利要求中的对应的结构、材料、动作和所有方法或步骤加功能元件的等价物意欲包括结合具体要求的其它权利要求的元件进行所述功能的任何结构、材料或动作。为了说明和描述的目的,已经呈现了对本发明的描述,但是所述描述不意欲是穷举性的或者将本发明限制到所公开形式。在不脱离本发明的范围和精神的情况下,许多修改和变化对本领域的普通技术人员来说将是显而易见的。实施例被选中并且描述以便于最好地解释本发明的原理以及实际应用,并且使得本领域其它普通技术人员能够对于具有适合于所构思的特定用途的各种修改的各种实施例理解本发明。
为了说明的目的,已经呈现了对本发明的各种实施例的描述,但是所述描述不意欲是穷举性的或者限制所公开的实施例。在不脱离所述实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员来说将是显而易见的。这里所使用的术语被选中以最好地解释实施例的原理、实际应用或相比于在市场上可以找到的技术的技术改善,或者使得本领域其它普通技术人员能够理解这里所公开的实施例。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读贮存介质(或多个介质),所述介质在其上具有计算机可读程序指令以用于使得处理器执行本发明的方面。
计算机可读贮存介质可以是能够保留并且贮存由指令执行装置使用的指令的有形的装置。计算机可读贮存介质例如可以是,但不限于,电子贮存装置、磁贮存装置、光贮存装置、电磁贮存装置、半导体贮存装置或者前述的任何合适的组合。计算机可读贮存介质的更加具体的示例的非穷举性列表包括下述:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用盘(DVD)、存储器条、软盘、诸如打孔卡或者具有指令记录在其上的在槽中的凸起的结构的机械编码的装置、以及前述的任何合适的组合。如这里所使用的,计算机可读贮存介质不应被解释为瞬时性信号本身,所述信号诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,穿过光纤缆线的光脉冲)或者通过电线传输的电信号。
这里所述的计算机可读程序指令可以从计算机可读贮存介质被下载到相应的计算/处理装置或者通过网络下载到外部计算机或外部贮存装置,所述网络例如因特网、局域网、广域网和/或无线网络。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、开关、网关计算机和/或边缘服务器。在每个计算/处理装置中的网络适配器卡或网络接口从网络接收计算机可读程序指令并且转发计算机可读程序指令以用于贮存在相应的计算/处理装置中的计算机可读贮存介质中。
用于执行本发明的操作的计算机可读程序指令可以是用一个或多个编程语言的任何组合写的汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关的指令、微代码、固件指令、状态设置数据、或者源代码或目标代码,所述编程语言包括面对对象的编程语言(诸如Smalltalk或者C++等)以及传统的过程编程语言(诸如“C”编程语言或类似编程语言)。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单机软件包执行、部分在用户的计算机上并且部分在远程计算机上或者完全在远程计算机或服务器上执行。在后者情景中,远程计算机可以通过任何类型的网络连接到用户的计算机,所述网络包括局域网(LAN)或广域网(WAN),或者可以使所述连接到外部计算机(例如,使用网络服务提供商通过因特网)。在一些实施例中,电子电路包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),所述电子电路可以通过使用计算机可读程序指令的状态信息执行计算机可读程序指令以个性化所述电子电路,以便于进行本发明的方面。
参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程示意图和/或框图在这里描述本发明的方面。将理解的是,流程示意图和/或框图的每个块,以及在流程示意图和/或框图中的块的组合,可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供到通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令,创建用于实现流程图和/或框图的一个或多个块中指明的功能/动作的方法。这些计算机可读程序指令还可以贮存在能够引导计算机、可编程数据处理设备和/或其它装置以特定方式运作的计算机可读贮存介质中,使得具有指令贮存在其中的计算机可读贮存介质包括制造品,所述制造品包括实现在流程图和/或框图的一个或多个块中指明的功能/动作的方面的指令。
计算机可读程序指令还可以加载到计算机、其它可编程数据处理设备或其它装置上以使得在计算机、其它可编程设备或其它装置上进行一系列操作性步骤,以产生计算机实现的过程,使得在计算机、其它可编程设备或其它装置上执行的指令实现在流程图和/或框图的一个或多个块中指明的功能/动作。
在附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能的实现方式的架构、功能和操作。在此方面,在流程图或框图中的每个块可以表示指令的模块、分段或部分,所述指令包括一个或多个可执行指令以用于实现一个或多个特定的逻辑功能。在一些可替换实现方式中,在所述块中注释的功能可以以不同于附图中注释的次序发生。例如,取决于所涉及的功能,被示出为连续的两个块事实上可以基本上同时被执行,或者所述块可以有时以相反的次序被执行。还将注意的是,框图和/或流程示意图的每个块,以及在框图和/或流程示意图中的块的组合,可以通过进行特定的功能或动作或者执行专用硬件和计算机指令的组合的专用的基于硬件的系统实现。

Claims (14)

1.一种控制两个或多个远程会话的计算机实现的方法,包括:
同步两个或多个远程会话以使用共同的界面控制每个会话,其中所述两个或多个远程会话对应具有程序执行中的差异的至少两个不同的平台;
使用所述共同的界面在相同的时间处将一个或多个可执行的命令发送到每个远程会话以控制该远程会话的操作;
接收从执行所述命令由每个远程会话产生的数据;
分析从每个远程会话接收的数据以识别由每个远程会话产生的数据中的一个或多个差异;
基于不同平台的程序执行中的已知的差异过滤出识别的差异的更大的集合中的识别的差异的子集以产生识别的差异的结果集合,其中所述识别的差异的子集包括预定义范围内的数据的不同表示的值之间的差异;以及
在所述共同的界面上显示在所述数据中的一个或多个识别的差异的结果集合。
2.如权利要求1所述的计算机实现的方法,其中所述可执行的命令由所述共同的界面的用户产生。
3.如权利要求1所述的计算机实现的方法,其中所述可执行的命令以批处理文件的形式提供。
4.如权利要求1所述的计算机实现的方法,还包括:
提供关于由每个远程会话产生的所述数据中的差异的可能的根本原因的指示。
5.如权利要求1所述的计算机实现的方法,其中每个远程会话包括程序调试会话。
6.如权利要求5所述的计算机实现的方法,其中所述数据包括寄存器值、指针值或贮存在存储器中的值的一个或多个。
7.如权利要求1所述的计算机实现的方法,还包括:
产生包括所述数据中的一个或多个识别的差异的结果集合的报告。
8.一种用于控制两个或多个远程会话的系统,包括:
至少一个处理器被配置为:
同步两个或多个远程会话以使用共同的界面控制每个会话,其中所述两个或多个远程会话对应具有程序执行中的差异的至少两个不同的平台;
使用所述共同的界面在相同的时间处将一个或多个可执行的命令发送到每个远程会话以控制该远程会话的操作;
接收从执行所述命令由每个远程会话产生的数据;
分析从每个远程会话接收的数据以识别由每个远程会话产生的数据中的一个或多个差异;
基于不同平台的程序执行中的已知的差异过滤出识别的差异的更大的集合中的识别的差异的子集以产生识别的差异的结果集合,其中所述识别的差异的子集包括预定义范围内的数据的不同表示的值之间的差异;以及
在所述共同的界面上显示在所述数据中的一个或多个识别的差异的结果集合。
9.如权利要求8所述的系统,其中所述可执行的命令由所述共同的界面的用户产生。
10.如权利要求8所述的系统,其中所述可执行的命令以批处理文件的形式提供。
11.如权利要求8所述的系统,其中所述至少一个处理器被配置为提供关于由每个远程会话产生的所述数据中的差异的可能的根本原因的指示。
12.如权利要求8所述的系统,其中每个远程会话包括程序调试会话。
13.如权利要求12所述的系统,其中所述数据包括寄存器值、指针值或贮存在存储器中的值的一个或多个。
14.如权利要求8所述的系统,其中所述处理器被配置为产生包括所述数据中的一个或多个识别的差异的结果集合的报告。
CN201610012112.8A 2015-01-08 2016-01-08 用于控制两个或多个远程会话的方法和系统 Active CN105791385B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/592,573 2015-01-08
US14/592,573 US9740593B2 (en) 2015-01-08 2015-01-08 Comparative program execution through control of two or more debug sessions to automatically determine execution differences

Publications (2)

Publication Number Publication Date
CN105791385A CN105791385A (zh) 2016-07-20
CN105791385B true CN105791385B (zh) 2018-12-25

Family

ID=56367671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610012112.8A Active CN105791385B (zh) 2015-01-08 2016-01-08 用于控制两个或多个远程会话的方法和系统

Country Status (2)

Country Link
US (1) US9740593B2 (zh)
CN (1) CN105791385B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10705835B2 (en) * 2015-12-03 2020-07-07 International Business Machines Corporation Transparent multi-architecture support in a container based cloud
US11188449B2 (en) 2016-05-31 2021-11-30 Red Hat, Inc. Automated exception resolution during a software development session based on previous exception encounters
US10102109B2 (en) * 2016-05-31 2018-10-16 Red Hat, Inc. Exception resolution in a software development session
US10216610B2 (en) * 2016-09-27 2019-02-26 International Business Machines Corporation Debug session analysis for related work item discovery
US11630650B2 (en) 2017-09-11 2023-04-18 NextWorld, LLC Systems and methods for creating enterprise software
GB2568379B (en) * 2017-10-02 2023-04-19 Fisher Rosemount Systems Inc Technology for assessing and presenting field device commissioning information associated with a process plant
US10204030B1 (en) 2017-10-09 2019-02-12 International Business Machines Corporation Debug session tree recorder with generic playback
US10083108B1 (en) * 2017-12-18 2018-09-25 Clover Network, Inc. Automated stack-based computerized application crawler
CN110769019B (zh) * 2018-07-27 2022-05-06 阿里巴巴集团控股有限公司 会话处理方法、装置、系统、存储介质和计算设备
CN109271313A (zh) * 2018-08-13 2019-01-25 中国平安财产保险股份有限公司 代码测试方法、装置及计算机可读存储介质
US11334472B2 (en) 2018-12-14 2022-05-17 NextWorld, LLC Automated testing for metadata-driven custom applications
US11307966B2 (en) * 2020-04-06 2022-04-19 Red Hat, Inc. Shared software debugging service

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286119A (zh) * 2008-05-27 2008-10-15 华耀环宇科技(北京)有限公司 一种通过分析代码变化确定功能点变化的方法
CN102289374A (zh) * 2011-08-31 2011-12-21 中兴通讯股份有限公司 一种构建跨平台软件运行环境的方法及装置
US8302050B1 (en) * 2010-04-22 2012-10-30 Cadence Design Systems, Inc. Automatic debug apparatus and method for automatic debug of an integrated circuit design

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0614320B2 (ja) 1984-10-17 1994-02-23 株式会社日立製作所 図式プログラム・テスト方法
JPH07113912B2 (ja) * 1991-05-31 1995-12-06 富士ゼロックス株式会社 分散型情報処理システムのデバッグ方式
US5410648A (en) 1991-08-30 1995-04-25 International Business Machines Corporation Debugging system wherein multiple code views are simultaneously managed
US5793369A (en) 1991-12-06 1998-08-11 Lucent Technologies Inc. Apparatus for visualizing program slices
US5432940A (en) 1992-11-02 1995-07-11 Borland International, Inc. System and methods for improved computer-based training
US5600789A (en) * 1992-11-19 1997-02-04 Segue Software, Inc. Automated GUI interface testing
US5819093A (en) * 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US6011920A (en) * 1995-04-05 2000-01-04 International Business Machines Corporation Method and apparatus for debugging applications on a personality neutral debugger
US6091896A (en) * 1995-12-22 2000-07-18 Hewlett-Packard Company Debugging optimized code using data change points
US6721941B1 (en) 1996-08-27 2004-04-13 Compuware Corporation Collection of timing and coverage data through a debugging interface
US5862381A (en) 1996-11-26 1999-01-19 International Business Machines Corporation Visualization tool for graphically displaying trace data
US6275868B1 (en) 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
US5892941A (en) * 1997-04-29 1999-04-06 Microsoft Corporation Multiple user software debugging system
US6247020B1 (en) 1997-12-17 2001-06-12 Borland Software Corporation Development system with application browser user interface
US6295613B1 (en) 1998-04-28 2001-09-25 International Business Machines Corporation Debug watch mechanism and method for debugging a computer program
CA2246270C (en) 1998-09-01 2003-09-23 Ibm Canada Limited - Ibm Canada Limitee Debugging multiple related processes simultaneously
US6467082B1 (en) 1998-12-02 2002-10-15 Agere Systems Guardian Corp. Methods and apparatus for simulating external linkage points and control transfers in source translation systems
US6593940B1 (en) 1998-12-23 2003-07-15 Intel Corporation Method for finding errors in multithreaded applications
US6986124B1 (en) * 1999-07-21 2006-01-10 Sun Microsystems, Inc. Debugger protocol generator
US6654950B1 (en) 1999-08-24 2003-11-25 Bae Systems Mission Solutions Inc. Software rehosting system and method
US6611276B1 (en) 1999-08-31 2003-08-26 Intel Corporation Graphical user interface that displays operation of processor threads over time
US6671825B1 (en) 1999-11-19 2003-12-30 Oracle International Corporation Method and apparatus for debugging a software program
JP3339482B2 (ja) * 1999-12-15 2002-10-28 日本電気株式会社 分散デバッグ装置及びデバッグ方法並びに制御プログラムを記録した記録媒体
US6654911B1 (en) 2000-06-15 2003-11-25 International Business Machines Corporation Interactive test sequence generation
US7174536B1 (en) 2001-02-12 2007-02-06 Iowa State University Research Foundation, Inc. Integrated interactive software visualization environment
US6829733B2 (en) 2001-05-07 2004-12-07 National Instruments Corporation System and method for graphically detecting differences between test executive sequence files
US7028223B1 (en) 2001-08-13 2006-04-11 Parasoft Corporation System and method for testing of web services
US6941492B1 (en) * 2002-02-05 2005-09-06 Emc Corporation Debugging tool for efficient switching between targets in a multi-processor environment
US7150002B1 (en) 2002-03-29 2006-12-12 Cypress Semiconductor Corp. Graphical user interface with logic unifying functions
US6964036B2 (en) 2002-05-21 2005-11-08 International Business Machines Corporation Descriptive variables while debugging
US6961924B2 (en) 2002-05-21 2005-11-01 International Business Machines Corporation Displaying variable usage while debugging
US20040040013A1 (en) * 2002-08-26 2004-02-26 Mohit Kalra Time-based breakpoints in debuggers
US7310777B2 (en) 2002-10-18 2007-12-18 Computer Associates Think, Inc. User interface for viewing performance information about transactions
CN1198214C (zh) * 2002-11-11 2005-04-20 威盛电子股份有限公司 于不同平台间存取任意位范围的数据的方法
US7149900B2 (en) 2002-12-12 2006-12-12 Intel Corporation Method of defending software from debugger attacks
CA2420479A1 (en) * 2003-02-13 2004-08-13 Ibm Canada Limited - Ibm Canada Limitee Flow debugging software and method
US7210127B1 (en) 2003-04-03 2007-04-24 Sun Microsystems Methods and apparatus for executing instructions in parallel
CA2447163A1 (en) * 2003-05-30 2004-11-30 Bruno Braeen A visual debugging interface
EP1680741B1 (en) * 2003-11-04 2012-09-05 Kimberly-Clark Worldwide, Inc. Testing tool for complex component based software systems
US20050223359A1 (en) * 2004-03-30 2005-10-06 Rao Nagaraju Kodalapura N Techniques for multi-core debugging
US7512934B2 (en) * 2004-08-25 2009-03-31 Microsoft Corporation Parallel debugger
US7607123B2 (en) * 2004-09-21 2009-10-20 Hewlett-Packard Development Company, L.P. Systems and methods for validating debug information for optimized code
US7634761B2 (en) 2004-10-29 2009-12-15 Microsoft Corporation Breakpoint logging and constraint mechanisms for parallel computing systems
US7703082B2 (en) 2004-12-07 2010-04-20 International Business Machines Corporation Controlling user intervention in a multi-processing computer system
US7441158B1 (en) * 2005-01-10 2008-10-21 L-3 Communications Integrated Systems, L.P. Embedded hardware debugging tool and associated method
US20060174225A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Debugging a High Level Language Program Operating Through a Runtime Engine
US7958486B2 (en) 2005-04-22 2011-06-07 Sap Ag Methods and systems for data-focused debugging and tracing capabilities
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
US20060277231A1 (en) 2005-06-06 2006-12-07 Javaground Usa, Inc. Integrated software development and porting system for wireless devices
US7464297B2 (en) 2005-06-23 2008-12-09 Microsoft Corporation System and method for testing software using data-driven test variations
US8079037B2 (en) 2005-10-11 2011-12-13 Knoa Software, Inc. Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications
US7844952B2 (en) 2005-12-22 2010-11-30 International Business Machines Corporation Grouping threads in a debugger display
US7844955B2 (en) 2005-12-24 2010-11-30 International Business Machines Corporation Performance computer program testing after source code modification using execution conditions
US8549320B2 (en) * 2006-11-02 2013-10-01 Red Hat, Inc. Verifying loaded module during debugging
US8095914B1 (en) 2007-04-03 2012-01-10 Altera Corporation Methods for instruction trace decomposition
US7949998B2 (en) * 2007-04-20 2011-05-24 Microsoft Corporation Programming framework for closed systems
US7757126B2 (en) 2007-04-20 2010-07-13 Sap Ag System and method for supporting software
US8370816B2 (en) * 2007-05-02 2013-02-05 International Business Machines Corporation Device, method and computer program product for evaluating a debugger script
US8060866B2 (en) * 2007-10-19 2011-11-15 GE Intelligent Platforms, Inc Systems and methods for debugging multiple workflow instances
US8336029B1 (en) * 2007-11-08 2012-12-18 Google Inc. Debugger connection
US8683438B2 (en) * 2007-11-28 2014-03-25 International Business Machines Corporation System, computer program product and method for comparative debugging
US8365149B2 (en) 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US7530056B1 (en) * 2008-03-31 2009-05-05 International Business Machines Corporation Method and system for detecting runtime defects in a program by comparing correct and incorrect runs
US7827438B2 (en) 2008-06-10 2010-11-02 Microsoft Corporation Distributed testing system and techniques
US20090328005A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Debugger call stack caching
US9058421B2 (en) 2009-06-16 2015-06-16 Freescale Semiconductor, Inc. Trace correlation for profiling subroutines
US8402442B1 (en) * 2009-07-28 2013-03-19 Xilinx, Inc. Common debugger method and system
US8793666B2 (en) * 2009-12-22 2014-07-29 Sap Ag Multidimensional debugger
US8171346B2 (en) * 2010-03-10 2012-05-01 Microsoft Corporation Client session based debugging
US9552280B2 (en) * 2010-05-13 2017-01-24 Microsoft Technology Licensing, Llc Visual analysis and debugging of complex event flows
US8752017B2 (en) * 2010-05-17 2014-06-10 Salesforce.Com, Inc. Method and system for remote debug protocol proxying for production debugging; selective session and user routing for debugging in multi-tenant cloud computing infrastructure
JP2012079130A (ja) * 2010-10-01 2012-04-19 Fujitsu Ltd デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法
US8990775B2 (en) * 2010-11-10 2015-03-24 International Business Machines Corporation Collaborative software debugging in a distributed system with dynamically displayed chat sessions
US8429553B2 (en) * 2010-11-12 2013-04-23 Microsoft Corporation Debugging in a multi-processing environment by providing debugging information on computer process nodes and messages in a GUI
US9021436B2 (en) * 2010-12-08 2015-04-28 Microsoft Technology Licensing Llc Automatic reconnection of debugger to a reactivated application
US8645920B2 (en) 2010-12-10 2014-02-04 Microsoft Corporation Data parallelism aware debugging
US8683267B2 (en) * 2011-06-07 2014-03-25 International Business Machines Corporation Virtual debugging sessions
US9298586B2 (en) 2011-10-11 2016-03-29 Apple Inc. Suspending and resuming a graphics application executing on a target device for debugging
US8656361B2 (en) * 2012-02-06 2014-02-18 Microsoft Corporation Debugging code visually on a canvas
US9251039B2 (en) * 2012-02-17 2016-02-02 Microsoft Technology Licensing, Llc Remote debugging as a service
CN102707951A (zh) * 2012-04-28 2012-10-03 浪潮电子信息产业股份有限公司 一种异构平台上高可用系统的设计方法
US9158657B2 (en) * 2013-02-19 2015-10-13 Audible, Inc. Architecture for remote access to content state
US20160019133A1 (en) * 2014-07-15 2016-01-21 4D Soft Kft. Method for tracing a computer software

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286119A (zh) * 2008-05-27 2008-10-15 华耀环宇科技(北京)有限公司 一种通过分析代码变化确定功能点变化的方法
US8302050B1 (en) * 2010-04-22 2012-10-30 Cadence Design Systems, Inc. Automatic debug apparatus and method for automatic debug of an integrated circuit design
CN102289374A (zh) * 2011-08-31 2011-12-21 中兴通讯股份有限公司 一种构建跨平台软件运行环境的方法及装置

Also Published As

Publication number Publication date
US20160203072A1 (en) 2016-07-14
US9740593B2 (en) 2017-08-22
CN105791385A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
CN105791385B (zh) 用于控制两个或多个远程会话的方法和系统
US10977010B2 (en) Development environment for real-time dataflow programming language
Minelli et al. Software analytics for mobile applications--insights & lessons learned
CN111310934A (zh) 一种模型生成方法、装置、电子设备和存储介质
Shkuro Mastering Distributed Tracing: Analyzing performance in microservices and complex systems
US9378124B1 (en) Software testing optimizer
CN110050257A (zh) 可执行数据流图的差分
CN112394922A (zh) 决策配置方法、业务决策方法和决策引擎系统
Luo et al. A survey of context simulation for testing mobile context-aware applications
CN110941467A (zh) 数据处理方法、装置及系统
US8726238B2 (en) Interactive iterative program parallelization based on dynamic feedback
CN115668129A (zh) 流水线工件选择的动态自动化
CN113778500A (zh) 一种基于DevOps的软件开发生命周期管理平台
US10204028B2 (en) Rule spaces and architecture root detection
CN118202330A (zh) 在代码更新时检查源代码有效性
Remenska et al. Using model checking to analyze the system behavior of the LHC production grid
CN113377342B (zh) 一种项目构建方法、装置、电子设备及存储介质
Di Stefano et al. Prometheus and aiops for the orchestration of cloud-native applications in ananke
US20230153081A1 (en) Methods and systems for correlating source code commitments and model result records during model development
US20220237108A1 (en) Source traceability-based impact analysis
WO2023143746A1 (en) System and method for managing artifacts related to apps
US20240329983A1 (en) Development environment integrated with infrastructure cost estimation system
US20240210903A1 (en) Software Development (DevOps) Pipelines for Robotic Process Automation
Imamura et al. Bug-fix variants: Visualizing unique source code changes across github forks
US12099518B1 (en) System and methods for process mining using integrated data fabric

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant