首页> 中国专利> 用于自动化跨系统程序调试的方法和装置

用于自动化跨系统程序调试的方法和装置

摘要

本公开内容涉及用于自动化跨系统程序调试的方法和装置。本发明的一个实施例提供一种用于跨系统程序调试的方法。所述方法包括:确定第一系统的第一调试会话中的第一断点;确定第二系统的第二调试会话中的第二断点,所述第二系统不同于所述第一系统;以及响应于用户在所述第一调试会话和所述第二调试会话中执行将所述第一断点与所述第二断点相关联的调试动作,记录所述第一断点与所述第二断点之间的关联,以用于对跨所述第一系统和所述第二系统的程序调试进行自动化。还描述了相应的装置。

著录项

  • 公开/公告号CN105630661A

    专利类型发明专利

  • 公开/公告日2016-06-01

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201410593373.4

  • 申请日2014-10-29

  • 分类号G06F11/36;

  • 代理机构北京市金杜律师事务所;

  • 代理人酆迅

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-18 15:46:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-25

    授权

    授权

  • 2016-06-29

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20141029

    实质审查的生效

  • 2016-06-01

    公开

    公开

说明书

技术领域

本发明的实施例总体上涉及程序开发领域,并且特别涉及用于 自动化跨系统程序调试的方法和装置。

背景技术

在程序开发过程中,程序员经常需要对所编制的程序进行调试 (debug),以发现程序源代码中的语法和/或逻辑错误。调试器 (debugger)是用于执行调试的常见工具。例如,在集成开发环境 (IDE)中通常提供专门的调试器。对于单个系统中的调试会话而言, 可以通过使用一个或多个断点(breakpoint)来完成调试过程。如已 知的,断点用于使处于调试会话中的程序停止在程序员指定的位置, 以便分析程序的状态、特定变量的数值,等等。

然而,在多系统环境中,跨系统程序调试面临诸多挑战。在这 样的环境中,运行于不同系统的任务之间往往存在协作或依赖关系。 目前,无法在跨系统环境中实现自动化调试。用户需要在不同系统 上启动多个调试会话,并且以人工方式控制不同调试会话之间的协 作和通信。在此过程中,用户需要在不同系统的调试会话之间来回 切换,以便定位正确的断点。这个过程耗时且易错。而且,当用户 完成一轮调试之后,难以进行问题重现。

另外,对于支持并发任务的待调试程序而言,在相互协作的不 同系统上可能同时运行有大量任务。在传统方案中,难以从不同系 统的多个任务中准确地找到正在被调试的相互关联任务。例如,无 法精确地确定在一个系统上被调试的任务在其他系统上引发了哪些 相关任务的执行。由此,不同调试会话之间的协作可能发生错误, 从而导致整个调试过程失败。

发明内容

总体上,本发明的实施例提出一种用于自动化跨系统的程序调 试的技术方案。

在本发明的一个方面,提供一种用于自动化跨系统程序调试的 方法。该方法包括:确定第一系统的第一调试会话中的第一断点; 确定第二系统的第二调试会话中的第二断点,所述第二系统不同于 所述第一系统;以及响应于用户在所述第一调试会话和所述第二调 试会话中执行将所述第一断点与所述第二断点相关联的调试动作, 记录所述第一断点与所述第二断点之间的关联,以用于对跨所述第 一系统和所述第二系统的程序调试进行自动化。

在本发明的另一方面,提供一种用于自动化跨系统程序调试的 装置。所述装置包括:第一确定单元,被配置为确定第一系统的第 一调试会话中的第一断点;第二确定单元,被配置为确定第二系统 的第二调试会话中的第二断点,所述第二系统不同于所述第一系统; 以及记录单元,被配置为响应于用户在所述第一调试会话和所述第 二调试会话中执行将所述第一断点与所述第二断点相关联的调试动 作,记录所述第一断点与所述第二断点之间的关联,以用于对跨所 述第一系统和所述第二系统的程序调试进行自动化。

根据本发明的实施例,可以以断点为基础对跨系统的人工调试 进行记录,以便支持随后的自动调试和/或问题重现。而且,与单纯 基于单个系统的调试信息相比,所记录的关于用户的跨系统调试动 作的信息可被用来实现更为准确和高效的跨系统调试功能。本发明 的其他特征和优点将通过下文描述而变得容易理解。

附图说明

通过结合附图对本发明示例性实施方式进行更详细的描述,本 发明的上述以及其它目的、特征和优势将变得更加明显其中:

图1示出了适于用来实现本发明实施例的示例性计算机系统/服 务器的示意性框图;

图2示出了根据本发明实施例可实现于其中的跨系统调试环境 的示意性框图;

图3A和图3B示出了根据本发明实施例的用于自动化跨系统程 序调试的方法的示意性流程图;

图4示出了根据本发明实施例的用于识别不同系统中的关联任 务的方法的示意性流程图;以及

图5示出了根据本发明实施例的用于自动化跨系统程序调试的 装置的示意性框图。

在附图中,相同或相似的标号被用来表示相同或相似的元素。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附 图中显示了本公开的优选实施方式,然而应该理解,可以以各种形 式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这 些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。

图1示出了适于用来实现本发明实施方式的示例性计算机系统/ 服务器12的方框图。图1显示的计算机系统/服务器12仅仅是一个 示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图1所示,计算机系统/服务器12以通用计算设备的形式表现。 计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理 器或者处理单元16,系统存储器28,连接不同系统组件(包括系统 存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或 者存储器控制器,外围总线,图形加速端口,处理器或者使用多种 总线结构中的任意总线结构的局域总线。举例来说,这些体系结构 包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及 外围组件互连(PCI)总线。

计算机系统/服务器12典型地包括多种计算机系统可读介质。这 些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包 括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介 质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计 算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失 性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用 于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘 驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁 盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘 (例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。 在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与 总线18相连。存储器28可以包括至少一个程序产品,该程序产品 具有一组(例如至少一个)程序模块,这些程序模块被配置以执行 本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以 存储在例如存储器28中,这样的程序模块42包括-但不限于-操 作系统、一个或者多个应用程序、其它程序模块以及程序数据,这 些示例中的每一个或某种组合中可能包括网络环境的实现。程序模 块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机系统/服务器12也可以与一个或多个外部设备14(例如 键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用 户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计 算机系统/服务器12能与一个或多个其它计算设备进行通信的任何 设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/ 输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过 网络适配器20与一个或者多个网络(例如局域网(LAN),广域网 (WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配 器20通过总线18与计算机系统/服务器12的其它模块通信。应当明 白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件 和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单 元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储 系统等。

下面将详细描述本发明实施例的机制和原理。除非特别声明, 在下文和权利要求中使用的术语“基于”表示“至少部分地基于”。术语 “包括”表示开放性包括,即“包括但不限于”。术语“多个”表示“两个 或更多”。术语“一个实施例”表示“至少一个实施例”。术语“另一实施 例”表示“至少一个另外的实施例”。其他术语的定义将在下文描述中 给出。

图2示出了本发明的实施例可实现于其中的调试环境200的示 意图。根据本发明的实施例,提供了一种可用于协调不同系统之间 的程序调试的实体,称为“调试协调器”210。一般而言,调试协调器 210可以获取跨系统调试所涉及的各个调试会话中的调试信息(例如 断点),并且基于这些调试信息对用户的跨系统调试动作进行记录 和存储。

所记录的信息随后可被用于自动化调试或者问题重现。而且, 基于所记录的信息,可以支持基于跨系统状态的、较高级别的调试。 另外,在一个实施例中,还可以从多个系统的大量任务中,准确地 确定作为调试目标的任务。

为讨论方便之目的,将描述跨两个系统的程序调试。这两个系 统分别被称为“第一系统”220和“第二系统”230。但是,应当理解, 这仅仅是示例性的,无意以任何方式限制本发明的范围。本发明的 实施例适用于任意数目的系统之间的调试。

注意,在本公开的上下文中,术语“系统”可以表示两个独立的机 器或设备,也可以表示彼此独立的应用、程序模块,等等。相应地, 第一系统220与第二系统230之间的通信可以借助于计算机网络、 电信网络之类的网络连接来实现,也可以借助于功能调用、进程间 通信之类的单机通信机制来实现。而且,跨系统程序调试可能涉及 多个不同的物理设备,也可以在单个物理设备上完成。

另外,根据本发明的实施例,调试协调器210可以部署在第一 系统220和第二系统230中的任何一个系统上。备选地,调试协调 器210也可以独立于第一系统220和第二系统230而部署。

在第一系统上执行的调试会话(debuggingsession)被称为“第一 调试会话”225,在第二系统上执行的调试会话被称为“第二调试会 话”235。在此使用的术语“调试会话”是指用于对程序进行调试的会话 或者过程。例如,用户可以通过针对特定的程序代码片段启动调试 器而创建调试会话。处于调试会话中的程序可以如正常程序一样创 建任务并且进行操作,直到遇到断点或者任何其他调试标志,这将 在下文详述。

在一个实施例中,调试会话可以在相关的系统上运行。备选地, 在一个实施例中,调试会话可以全部或部分地位于相关系统的远程, 但是能够对系统上执行的程序进行调试。本发明的范围在此方面不 受限制。

图3A示出了根据本发明实施例的用于跨系统的程序调试的方 法300A的流程图。方法300A可以由调试协调器210来执行。如图 所示,方法300A开始于步骤S310,在此获取与第一系统的第一调 试会话相关联的调试信息,称为“第一调试信息”。

根据本发明的实施例,第一调试信息可以指示与第一调试会话 相关联的任何信息。特别地,在一个实施例中,第一调试信息至少 包括用户在第一调试会话中设置在程序代码中的一个或多个断点。 例如,第一调试信息可以指明第一调试会话中的每个断点在所调试 的程序代码中的位置,例如以行号指示。为讨论方便起见,假设在 步骤S310处至少确定第一系统的第一调试会话中的第一断点。

除了指示断点的信息之外,在一个实施例中,第一调试信息还 可以指示与第一调试会话相关联的任何其他信息,例如所调试的程 序代码的状态,等等。备选地或附加地,第一调试信息可以包括第 一系统、执行所述第一调试会话所使用的IDE等各种其他方面的有 关信息。

接下来,在步骤S320,在此获取与第二系统的第二调试会话相 关联的调试信息,称为“第二调试信息”。类似于第一调试信息,第 二调试信息至少可以指示用户在第二调试会话中设置于所调试程序 代码中的一个或多个断点。第二调试信息还可以包括任何其他有关 信息。为讨论方便起见,假设在步骤S320处至少确定第二系统的第 二调试会话中的第二断点。

特别地,尽管步骤S320在图3A中被示为在步骤S310之后执行, 但是这仅仅是为了讨论方便之目的,无意以任何方式限制本发明的 范围。将会理解,第二调试信息可以先于第一调试信息被获取,或 者与第一调试信息同时获取。换言之,步骤S310和S320可以按照 任何顺序执行,包括并行执行。

随后,在步骤S330,确定用户是否执行了将所述第一断点与所 述第二断点相关联的调试动作。如已知的,当调试会话中的被调试 程序执行到断点之后,用户可以执行调试动作。在此使用的术语“调 试动作”是指当被调试程序执行到断点之后,由用户执行的用于调 试程序的动作。

在一个实施例中,调试动作可以包括将被调试程序保持在中止 执行的状态。由此,用户例如可以查看被调试程序和/或系统的状态。 备选地或附加地,在一个实施例中,调试动作可以包括进入“单步 执行”模式。在该模式中,用户可以逐行调试程序,以便发现程序 代码中存在的问题。其他调试动作也是可行的。

与调试动作相反,如果用户在被调试程序达到断点之后直接命 令程序继续执行(即,跳过断点),则认为用户没有在该断点处执 行调试动作。

如果用户在第一调试会话中在第一断点处执行调试动作的情况 下,在第二调试会话中在第二断点处也执行了调试动作,则认为用 户执行了将第一断点与第二断点相关联的调试动作(分支“是”)。 例如,如果用户在第一断点处将第一调试会话保持中止和/或进入单 步执行模式的情况下,在第二断点处将第二调试会话保持中止和/或 进入单步执行模式,则认为用户执行了将第一断点与第二断点相关 联的调试动作。应当理解,第一调试会话与第二调试会话中的调试 动作可以相同,也可以不同。此时,方法进行到步骤S340,在此记 录第一断点与第二断点之间的关联。

在一个实施例中,可以使用表(table)来记录不同调试会话中的 断点之间的关联。这种表可以被称为“调试顺序表”。在这样的实施 例中,在步骤S340,可以在表中创建将第一断点与第二断点相关联 的条目。这样的条目按照调试的时间顺序而被存储在调试顺序表中。 作为示例,下面的表1示出了一个调试顺序表的示例。当然,本发 明的范围并不限于表。相反,可以使用任何适当的数据结构来存储 断点之间的跨系统关联关系。

表1

第一调试会话中的断点 第二调试会话中的断点 A1 B1 A2 B2 A3 B4 ...... ......

应当理解,不同调试会话中的断点之间的关联并不一定是一对 一关联。例如,第一调试会话中的一个断点可以与第二调试会话中 的多个断点相关联。类似地,在一个实施例中,第二调试会话中的 一个断点可以与第一调试会话中的多个断点相关联。本发明的范围 在此方面不受限制。

在某些实施例中,除了上面参考图3A描述的步骤S310到S340 之外,根据本发明实施例的跨系统程序调试还可以包括若干可选的 操作或者步骤。如图3B所示,在一个实施例中,在步骤S350,在 此记录用户在关联的一组断点之后所做的动作。步骤S350可以在图 3A中所示的步骤S340之后被执行。继续考虑上文示例,为讨论方 便之目的,进一步假设:第一断点先于第二断点到达。也就是说, 第一调试会话中的被调试程序首先执行到第一断点;而后第二调试 会话中的被调试程序执行到第二断点。此时,在一个实施例中,可 以监测并且记录用户在与第二断点相关联的调试动作之后所执行的 动作。

特别地,在一个实施例中,可以记录用户在从第二断点返回之 后是选择继续执行第一调试会话还是第二调试会话。如下文将会讨 论的,这将有利于问题的重现和自动化调试。备选地或附加地,也 可以记录其他后续动作,例如用户对第一系统和/或第二系统上的相 关状态的设置、有关数据或文件的操作,等等。

如上所述,在一个实施例中,断点之间的跨系统关联以及在从 断点返回之后的动作可以被存储为一个条目。这些条目可以按照调 试的时间顺序而被存储在一起从而形成调试顺序表。作为示例,下 面的表2示出了一个示例性调试顺序表的一部分,其中包含用户在 关联断点的调试动作之后执行的后续动作的有关信息。

表2

在表2所示的调试顺序表中,每行记录了具有跨系统关联关系 的断点。而且,可选地,还可以记录用户在相关联的每组断点之后 执行的动作。在此示例中,所记录的后续动作是用户选择第一调试 会话和第二调试会话中的哪一个继续执行。例如,根据调试顺序表 的第一行可知,第一调试会话中的断点A1与第二调试会话中的断点 B1相关联。而且,在从第二断点B1返回之后,用户继续执行了第 一调试会话。

如上所述,调试顺序表仅仅是记录断点关联的一种可行的实现, 并非有意以任何方式限制本发明的范围。在其他实施例中,可以使 用任何适当的数据结构来存储断点的关联关系,包括但不限于:文 本文件,可扩展标记语言(XML)文件,树,图,等等。

可选地,在一个实施例中,对于不同调试会话中相关联的断点, 可以在步骤S360记录与这些断点相关的跨系统调试状态。可以理解, 在跨系统的程序调试中,单个调试会话中的断点未必能够反映有意 义的总体调试状态。反之,多个调试会话中彼此关联的断点则能够 反映这种总体调试状态。由此,在一个实施例中,可以创建和记录 与彼此关联的一组断点相关的跨系统调试状态。在此使用的术语“跨 系统调试状态”是指由调试所涉及的多个调试会话(例如,第一调 试会话225和第二调试会话235)彼此相关的个体状态组成的总体调 试状态。

在一个实施例中,与一组关联的断点相关的调试状态可以由用 户指定。例如,在一个实施例中,响应于不同调试会话中的多个断 点的跨系统关联被记录,可以提示用户输入与这些相关联的断点有 关的总体调试状态。备选地或附加地,在一个实施例中,也可以根 据调试所涉及的一个或多个系统的当前状态,自动地推断总体调试 状态。

仅出于讨论之目的,仍然考虑断点被实现为调试顺序表的实施 例。如上所述,调试顺序表中的每一行记录不同调试会话中的相互 关联的断点。可选地,一个或多个行还可以记录用户的后续动作。 在这样的实施例中,例如,可以增加一个称为“调试状态”的维度 (列),用以记录与相关联的断点相关的跨系统调试状态。作为示 例,上面讨论的表2可以被修改为下面的表3:

表3

可以看到,对于相关联的每组断点,相应的跨系统调试状态被 设置和记录。例如,与关联的断点组{A2,B2,B3}相关的跨系统调试 状态为“检查接收的请求”。可以理解,该状态不仅仅反映一个调试 会话中被调试程序的状态。相反,它反映了相互协作的多个系统的 总体状态。

特别地,在一个实施例中,允许用户在这样的跨系统调试状态 上设置断点。这种断点不同于传统程序中针对特定程序语句的断点, 而是与所调试的总体状态有关,因此可以被称为“状态断点”。例如, 在上文描述的实施例中,可以允许用户对“检查接收的请求”这一跨 系统调试状态设置断点。以此方式,在随后基于记录的动作信息执 行调试时,可以协调多个调试会话中的程序的执行中止在相关联的 断点,以便针对特定的状态进行调试。这方面的实施例将在下文详 述。

通过执行的上述步骤,可以实现对用户的人工跨系统调试过程 的录制。基于所记录的信息(例如,其形式上为调试跟踪表),可 以实现自动的程序调制。例如,在一个实施例中,当用户希望对先 前调试过的程序再次进行跨系统调试时,可以发出跨系统调试的请 求。调试协调器可以在步骤S370接收该请求,并且在步骤S380基 于所记录的动作信息来执行自动或者半自动的跨系统的调试。以此 方式,可以实现自动化的问题重现,这对于程序调试而言至关重要。

而且,根据本发明的实施例,自动的或者半自动的跨系统调试 成为可能。例如,在一个实施例中,调试协调器可以根据所记录的 不同调试会话中的断点之间的关联以及相关的用户动作,来控制跨 系统的程序调试的自动执行过程。

作为示例,对于上文描述的表1、表2或者表3,当第一系统上 的第一调试会话中的程序执行到断点A1时,调试协调器可以根据生 成的调试顺序表来控制第二系统,以使得第二调试会话中的程序执 行到断点B1,以便检测或验证系统状态或者变量的值或者进入单步 执行模式,等等。而后,调试协调器可以根据所记录的后续动作继 续执行第一调试会话。接下来,响应于第一调试会话中的程序执行 到断点A2,调试协调器可以控制第二调试会话中的程序依次执行到 断点B2、B3。当第二调试会话中的程序达到断点B3并且完成了相 应的调试动作之后,调试协调器可以控制第二系统上的第二调试会 话中的程序继续执行,以此类推。

特别地,如上所述,在一个实施例中,允许用户针对跨系统调 试状态设置状态断点。在一个实施例中,状态断点可以在跨系统调 试请求中指示。备选地或附加地,也可以在跨系统调试的执行过程 中,从用户处接收对状态断点的指示。调试协调器可以基于一个或 多个状态断点来控制不同系统上的多个调试会话之间的协作,使得 作为整个应用的执行被中止在指定的状态断点处。

作为示例,仍然考虑上文参考表2或者表3描述的实施例。假 设用户对于“检查容器的数据”这一状态设置了状态断点。此时,调 试协调器会控制第一系统,使得第一调试会话中的被调试程序依次 执行到断点A3和A4。而且,调试协调器可以控制第二系统,使得 第二调试会话中的被调试程序执行到断点B4。此时,调试协调器可 以同时阻止第一调试会话和第二调试会话二者中程序的继续执行。 这样做是有益的。例如,用户关心的可能仅仅是“检查容器的数据” 这一总体状态下的系统行为。此时,根据本发明的实施例中,用户 无需针对A3、A4、B4每个断点都对调试过程进行人工干预,这可 以显著提高调试过程的效率。

在跨系统的程序调试中,另一个需要解决的问题是在多任务并 发的情况下,在不同系统上正在被调试的程序所创建的多个任务中, 准确地找到哪些任务是彼此相关的。例如,假设在第一系统的第一 调试会话中被调试的第一程序启动了第一任务,该任务将向第二系 统发送一个请求。第二系统的第二调试会话中被调试的第二程序将 生成用于接收该请求的任务。然而,如果第二系统是支持并发任务 的系统,第二程序在被执行时可能创建多个用于接收请求的并发任 务。

传统上,在这种情况下,无法确定第二系统上的哪个任务是与 第一系统上的第一任务相关联的任务。例如,在某些已知方案中, 总是假设:第二系统上首次执行到第二程序中所设置的断点的任务 与第一系统上的第一任务相关联。然而,实践发现,这种假设通常 是不成立的,并且因此将导致调试过程失败。

根据本发明的实施例,提出了一种用于识别不同系统的调试会 话中相关任务的技术方案。图4示出了这方面的示例性方法400的 示意性流程图。与方法300A和300B类似,方法400同样可由调试 协调器来执行。为讨论方便之目的,仍然将参考上文描述的第一系 统上的第一调试会话和第二系统上的第二调试会话来描述方法400。

方法400开始于步骤S410,在此从第一系统接收第一任务的跟 踪信息(trackinginformation)。第一任务是在第一系统的第一调试 会话中的被调试程序所发起的任务。第一跟踪任务的跟踪信息可以 是特定于第一任务的任何信息,例如唯一的标识符、数字、字母或 其任意组合。

根据本发明的实施例,当第一任务被启动时,它会将特定的第 一跟踪信息发送给第二系统上与之交互的任务。例如,第一任务可 以将第一跟踪信息随同数据一起发送其在第二系统上的关联任务。 当然,分别发送数据和第一跟踪信息也是可能的。而且,第一任务 将第一跟踪信息发送给调试协调器。

方法400进行到步骤S420,在此从第二系统接收一个任务(称 为“第二任务”)的跟踪信息(称为“第二跟踪信息”)。第二跟踪信息 是第二任务从第一系统上与之关联的任务接收到的、该关联任务的 特定跟踪信息。第二任务可以在任何适当的时机向调试协调器发送 第二跟踪信息。例如,可以在第二任务被创建或者启动时。备选地, 也可以在第二任务第一次到达程序中的断点时,向调试协调器发送 第二跟踪信息。

在步骤S430,调试协调器对步骤在S410处从第一系统接收的第 一跟踪信息和在步骤S420处从第二系统接收的第二跟踪信息进行匹 配。如果第一跟踪信息与第二跟踪信息不匹配(分支“否”),则可 以确定在第一系统上与第二任务相关联的任务并不是正在调试的第 一任务。此时,当前所处理的第二任务将不会触发调试会话的启动。 方法400返回步骤S420,继续接收和检测第二系统上的其他任务发 送的跟踪信息。

另一方面,如果在步骤S430确定第一跟踪信息与第二跟踪信息 相匹配(分支“是”),可以确定在第一系统上与第二任务相关联的 任务正是当前被调试的第一任务。由此,第二任务就是第二系统上 与第一任务相关联的任务。此时,方法400进行到步骤S440,在此 启动针对第二任务的调试任务。例如,当第二任务的执行达到断点 时,将中止程序的执行以便检查系统状态、变量值,等等。

应当理解,上文描述的方法300和400可以单独使用,也可以 结合使用。例如,在多系统、并发任务的调试中,可以首先使用方 法400来确定不同系统上的相关联的任务,继而使用方法300来记 录用户的动作信息并且基于所记录的动作信息来实现问题重现和/或 自动化调试。将会理解,此时,在步骤S440处启动的将是方法300 中所处理的第二任务。

图5示出了根据本发明实施例的用于程序调试的装置500的示 意图。可以理解,装置500是图2中所示的调试协调器210的一种 示例性实现。如图所示,装置500包括:第一确定单元510,被配置 为确定第一系统的第一调试会话中的第一断点;第二确定单元520, 被配置为确定第二系统的第二调试会话中的第二断点,所述第二系 统不同于所述第一系统;以及断点关联记录单元530,被配置为响应 于用户在所述第一调试会话和所述第二调试会话中执行将所述第一 断点与所述第二断点相关联的调试动作,记录所述第一断点与所述 第二断点之间的关联,以用于对跨所述第一系统和所述第二系统的 程序调试进行自动化。

在一个实施例中,装置500还可以包括:后续动作记录单元, 被配置为记录所述用户在与所述第二断点相关联的调试之后执行的 动作,所述第一断点先于所述第二断点到达。在一个实施例中,所 述后续动作记录单元可以包括:后续调试会话记录单元,被配置为 记录所述用户在与所述第二断点相关联的所述调试之后,继续执行 所述第一调试会话还是所述第二调试会话。

在一个实施例中,装置500还可以包括:跨系统调试状态记录 单元,被配置为记录与所述第一断点和所述第二断点相关联的跨系 统调试状态,所述跨系统调试状态表示所述第一调试会话和所述第 二调试会话的总体状态。在一个实施例中,装置500还可以包括: 状态断点设置单元,被配置为设置与所述跨系统调试状态相关联的 状态断点,以用于控制跨所述第一系统和所述第二系统的程序调试。

在一个实施例中,装置500还可以包括:请求接收单元,被配 置为接收执行跨所述第一系统和所述第二系统的所述程序调试的请 求;以及调试执行单元,被配置为响应于所述请求,基于所记录的 所述断点之间的跨系统关联,至少部分自动地执行所述程序调试。

在一个实施例中,装置500还可以包括:第一跟踪信息接收单 元,被配置为从第一系统接收第一任务的第一跟踪信息,所述第一 跟踪信息响应于针对所述第一任务的所述第一调试会话的启动而从 所述第一系统被发送;第二跟踪信息接收单元,被配置为从第二系 统的第二任务接收第二跟踪信息,所述第二跟踪信息接收自所述第 一系统的与所述第二任务相关联的任务;以及调试会话启动单元, 被配置为响应于所述第一跟踪信息与所述第二跟踪信息相匹配,启 动针对所述第二任务的所述第二调试会话。

[001]为清晰起见,图5中没有示出装置500所包括的可选单元或者 子单元。上文所描述的所有特征和操作分别适用于装置500,故在此 不再赘述。而且,装置500中的单元或子单元的划分不是限制性的 而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的 功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实 现。本发明的范围在此方面不受限制。

[002]而且,装置500所包含的单元可以利用各种方式来实现,包括 软件、硬件、固件或其任意组合。例如,在某些实施方式中,装置 500可以利用软件和/或固件来实现。备选地或附加地,装置500可 以部分地或者完全地基于硬件来实现。例如,装置500中的一个或 多个单元可以实现为集成电路(IC)芯片、专用集成电路(ASIC)、 片上系统(SOC)、现场可编程门阵列(FPGA),等等。本发明的 范围在此方面不受限制。

[003]本发明可以是系统、方法和/或计算机程序产品。计算机程序产 品可以包括计算机可读存储介质,其上载有用于使处理器实现本发 明的各个方面的计算机可读程序指令。

[004]计算机可读存储介质可以是可以保持和存储由指令执行设备使 用的指令的有形设备。计算机可读存储介质例如可以是-但不限 于-电存储设备、磁存储设备、光存储设备、电磁存储设备、半导 体存储设备或者上述的任意合适的组合。计算机可读存储介质的更 具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机 存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存 储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式 压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、 软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起 结构、以及上述的任意合适的组合。这里所使用的计算机可读存储 介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的 电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤 电缆的光脉冲)、或者通过电线传输的电信号。

[005]这里所描述的计算机可读程序指令可以从计算机可读存储介质 下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、 广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包 括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、 网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或 者网络接口从网络接收计算机可读程序指令,并转发该计算机可读 程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质 中。

[006]用于执行本发明操作的计算机程序指令可以是汇编指令、指令 集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、 状态设置数据、或者以一种或多种编程语言的任意组合编写的源代 码或目标代码,所述编程语言包括面向对象的编程语言-诸如Java、 Smalltalk、C++等,以及常规的过程式编程语言-诸如“C”语言或类 似的编程语言。计算机可读程序指令可以完全地在用户计算机上执 行、部分地在用户计算机上执行、作为一个独立的软件包执行、部 分在用户计算机上部分在远程计算机上执行、或者完全在远程计算 机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以 通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连 接到用户计算机,或者,可以连接到外部计算机(例如利用因特网 服务提供商来通过因特网连接)。在一些实施例中,通过利用计算 机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻 辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA), 该电子电路可以执行计算机可读程序指令,从而实现本发明的各个 方面。

[007]这里参照根据本发明实施例的方法、装置(系统)和计算机程 序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流 程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都 可以由计算机可读程序指令实现。

[008]这些计算机可读程序指令可以提供给通用计算机、专用计算机 或其它可编程数据处理装置的处理器,从而生产出一种机器,使得 这些指令在通过计算机或其它可编程数据处理装置的处理器执行 时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/ 动作的装置。也可以把这些计算机可读程序指令存储在计算机可读 存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他 设备以特定方式工作,从而,存储有指令的计算机可读介质则包括 一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规 定的功能/动作的各个方面的指令。

[009]计算机可读程序指令也可加载到计算机、其它可编程数据处理 装置、或其它设备上,使得在计算机、其它可编程数据处理装置或 其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而 使得在计算机、其它可编程数据处理装置、或其它设备上执行的指 令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

[010]附图中的流程图和框图显示了根据本发明的多个实施例的系 统、方法和计算机程序产品的可能实现的体系架构、功能和操作。 在这点上,流程图或框图中的每个方框可以代表一个模块、程序段 或指令的一部分,所述模块、程序段或指令的一部分包含一个或多 个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现 中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。 例如,两个连续的方框实际上可以基本并行地执行,它们有时也可 以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框 图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组 合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现, 或者可以用专用硬件与计算机指令的组合来实现。

[011]以上已经描述了本发明的各实施例,上述说明是示例性的,并 非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的 各实施例的范围和精神的情况下,对于本技术领域的普通技术人员 来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨 在最好地解释各实施例的原理、实际应用或对市场中技术的技术改 进,或者使本技术领域的其它普通技术人员能理解本文披露的各实 施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号