计算机程序的方法

文档序号:10663572阅读:510来源:国知局
计算机程序的方法
【专利摘要】本发明提出了一种调试方法。一种运行程序的计算机生成主核心转储文件和一个或多个从核心转储文件以响应内部失败等触发事件。另一计算机分析所述核心转储文件以调试所述程序。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述一个或多个从核心转储文件的一个从核心转储文件。可以首先将所述主核心转储文件传送给所述另一计算机。基于所述索引列表中的信息,所述另一计算机选择性地请求所述生成的从核心转储文件中的一个或多个从核心转储文件用于调试。
【专利说明】
计算机程序的方法
技术领域
[0001]本发明大体上涉及计算机技术,尤其涉及一种调试计算机程序的方法。
【背景技术】
[0002]调试是开发计算机程序中的一个重要过程。所谓的“漏洞”是计算机程序(下文中称为“程序”)或系统中的错误、缺陷、失败或故障。漏洞可能会导致错误或意外的结果,或者导致程序或系统表现异常。程序中的漏洞可以通过调试过程检测和纠正。执行调试的一种方式是,当程序在计算机中运行时,检测计算机存储器中存储程序对应的信息的区域。存储器区域中存储的信息可以作为一个文件来取回或进行所谓的“转储”。这种文件称为核心转储文件,还可称为故障转储文件、检查点文件或快照文件。核心转储文件对应于程序和/或相应的操作系统,并且反映程序的执行情况。
[0003]调试过程可以由调试器程序(下文中称为“调试器”)执行,该调试器程序也在运行程序的计算机中运行。然而,由于调试器消耗计算机资源(例如,内存空间、总线带宽和处理器时间等),所以运行调试器可能会影响到正在调试的程序的执行。为了调试程序,同时避免计算机中运行的调试器可能带来的干扰,更加希望在另一计算机上远程调试程序。这可以通过以下方式实现:将运行程序的计算机(下文中称为“远程计算机”)生成的核心转储文件提供给其它计算机(下文中称为“宿主计算机”)并且通过分析宿主计算机中的核心转储文件调试程序。
[0004]然而,程序的核心转储文件可能很大,例如,超过100兆字节(MB)或甚至超过I千兆字节(GB)。将核心转储文件从远端计算机传送给宿主计算机会消耗大量带宽并且需要很长的传送时间。

【发明内容】

[0005]本文通过各种实施例提出了各种技术方案,以减少远程调试过程期间的核心转储文件传送时间和/或带宽并且提高调试过程的效率。
[0006]第一方面,本发明的实施例提供一种第一计算设备调试第二计算设备中运行的程序的方法。所述第一计算设备获取所述第二计算设备生成的主核心转储文件。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述第二计算设备生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述第一计算设备根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件,获取所述选择的第一从核心转储文件,以及将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中。所述第一计算设备分析所述组装的核心转储文件以调试所述第二计算设备中运行的所述程序。
[0007]第二方面,本发明的实施例提供一种使能第一计算设备调试第二计算设备中运行的程序的方法。所述第二计算设备生成主核心转储文件和一个或多个从核心转储文件。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述第二计算设备随后使能所述第一计算设备访问所述主核心转储文件。所述第二计算设备接收所述第一计算设备对第一从核心转储文件的请求。根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择所述第一从核心转储文件。所述第二计算设备使能所述第一计算设备访问所述第一从核心转储文件。所述第一计算设备将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中并分析所述组装的核心转储文件以调试所述第二计算设备中运行的所述程序。
[0008]第三方面,本发明的实施例提供一种调试第二计算设备中运行的程序的第一计算设备。所述第一计算设备包括存储设备、通信接口以及与所述存储设备和所述通信接口耦合的处理器。所述存储设备用于存储指令,所述处理器用于执行所述指令,以及所述通信接口用于在所述处理器的控制下与所述第二计算设备进行通信。当所述处理器执行所述指令时,所述指令使所述处理器获取所述第二计算设备生成的主核心转储文件。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述第二计算设备生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述指令还使所述处理器根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件,获取所选择的第一从核心转储文件,以及将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中。所述第一计算设备分析所述组装的核心转储文件以调试所述第二计算设备中运行的所述程序。
[0009]第四方面,本发明的实施例提供一种第二计算设备。所述第二计算设备运行第一计算设备待调试的程序。所述第二计算设备包括存储设备、通信接口以及与所述存储设备和所述通信接口耦合的处理器。所述存储设备用于存储指令,所述处理器用于执行所述指令,以及所述通信接口用于在所述处理器的控制下与所述第一设备进行通信。当所述处理器执行所述指令时,所述指令使所述处理器生成主核心转储文件和一个或多个从核心转储文件。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述指令还促使所述处理器使能所述第一计算设备访问所述主核心转储文件;接收所述第一计算设备对第一从核心转储文件的请求,其中所述第一从核心转储文件是根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择的;以及使能所述第一计算设备访问所述第一从核心转储文件。所述第一计算设备将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中并分析所述组装的核心转储文件以调试所述第二计算设备中运行的所述程序。
[0010]第五方面,本发明的实施例提供一种存储程序代码的计算机可读介质,第一计算设备执行所述程序代码以调试第二计算设备中运行的程序。所述程序代码包括获取所述第二计算设备生成的主核心转储文件的指令。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述第二计算设备生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述程序代码还包括用于以下操作的指令:根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件,获取所选择的第一从核心转储文件,以及将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中。所述第一计算设备分析所述组装的核心转储文件以调试所述第二计算设备中运行的所述程序。
[0011 ]第六方面,本发明的实施例提供一种存储程序代码的计算机可读介质,所述程序代码由运行第一计算设备待调试的程序的第二计算设备执行。所述程序代码包括生成主核心转储文件和一个或多个从核心转储文件的指令。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述程序代码还包括用于以下操作的指令:使能所述第一计算设备访问所述主核心转储文件;接收所述第一计算设备对第一从核心转储文件的请求,其中所述第一从核心转储文件是根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择的;以及使能所述第一计算设备访问所述第一从核心转储文件。所述第一计算设备将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中并分析所述组装的核心转储文件以调试所述第二计算设备中运行的所述程序。
[0012]第七方面,本发明的实施例提供一种调试第二装置中运行的程序的第一装置。所述第一装置包括核心转储文件获取单元和调试单元。所述核心转储文件获取单元用于获取所述第二装置生成的主核心转储文件。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述第二装置生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述核心转储文件获取单元还用于根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件并获取所述第一从核心转储文件。所述调试单元用于将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中,以及通过分析所述组装的核心转储文件调试所述第二装置中运行的所述程序。
[0013]第八方面,本发明的实施例提供一种运行由第一装置调试的程序的第二装置。所述第二装置包括核心转储文件生成单元、访问使能单元以及请求接收单元。所述核心转储文件生成单元用于生成主核心转储文件和一个或多个从核心转储文件。所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述一个或多个从核心转储文件中的一个从核心转储文件。所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。所述访问使能单元用于使能所述第一装置访问所述主核心转储文件。所述请求接收单元用于接收所述第一装置对第一从核心转储文件的请求。根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择所述第一从核心转储文件。所述访问使能单元还用于使能所述第一装置访问所述第一从核心转储文件。所述第一装置将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中并分析所述组装的核心转储文件以调试所述程序。
[0014]第九方面,本发明的实施例提供一种第一计算设备用来调试第二计算设备中运行的程序的主核心转储文件。所述主核心转储文件包括核心元数据字段,所述核心元数据字段存储与所述程序相关的、由所述第二计算设备生成的一个或多个从核心转储文件的索引列表。所述索引列表的每个条目对应于一个或多个从核心转储文件中的一个从核心转储文件。所述第一计算设备根据所述主核心转储文件的所述索引列表中的信息选择所述一个或多个从核心转储文件的第一从核心转储文件并且获取所述第一从核心转储文件。然后,所述第一计算设备可以分析所述主核心转储文件和所述第一从核心转储文件以调试所述第二计算设备中运行的所述程序。
[0015]在研究下文附图和详细描述之后其它系统、方法、特征和优点对于本领域普通技术人员来说将是或变得显而易见。希望所有这些其它系统、方法、特征和优点包含在本描述中,在本发明的范围内,并且受所附权利要求书的保护。
【附图说明】
[0016]现将参考附图通过非限制性的实施例描述本发明的优选特征,其中:
[0017]图1为计算设备的简化方框图;
[0018]图2A为一系统的简化方框图,其中在该系统上可根据本发明实施例实施调试过程;
[0019]图2B为根据本发明实施例的远程计算机的简化方框图,在远程计算机中存储并执行待调试的程序;
[0020]图2C为根据本发明实施例的宿主计算机的简化方框图,该宿主计算机调试在远程计算机中存储和执行的程序;
[0021]图3为根据本发明实施例的获取远程计算机中运行的程序的主核心转储文件和一个或多个从核心转储文件的过程的流程图;
[0022]图4为根据本发明实施例的宿主计算机分析主核心转储文件和一个或多个从核心转储文件的过程的流程图;
[0023]图5为根据本发明实施例的用于调试程序的方法的流程图;
[0024]图6为根据本发明实施例的主核心转储文件和一个或多个从核心转储文件的示意图;
[0025]图7为根据本发明实施例的示例性的组装的核心转储文件的示意图;
[0026]图8为根据本发明实施例的用于生成和提供程序对应的核心转储文件的装置的简化功能方框图;以及
[0027]图9为根据本发明实施例的用于调试远程计算机中运行的程序的装置的简化功能方框图。
[0028]在整个附图中,相同的参考符号和描述表示类似的但不一定完全相同的元件。尽管本文所述的示例性实施例很容易进行各种修改或替换成其它形式,所以特定实施例已经通过附图中的示例示出并将在本文中进行详细描述。然而,本文所述的示例性实施例并不旨在限制所公开的特定形式。相反,当前发明涵盖属于所附权利要求书的范围内的所有修改、等效物以及替代物。
【具体实施方式】
[0029]为了使本申请的上述目的、技术方案和优点更易于理解,下文提供了详细的描述。所述详细的描述通过使用方框图、流程图和/或示例提出了设备和/或过程的各种实施例。由于这些方框图、流程图和/或示例包含一个或多个功能和/或操作,所以本领域内人员将理解可以通过许多硬件、软件、固件或它们的任意组合单独和/或共同实施这些方框图、流程图或示例内的每个功能和/或操作。
[0030]图1为计算设备100的简化方框图。计算设备100包括与一个或多个数据存储装置耦合的处理器101。数据存储装置可包括存储介质106和存储器单元104。存储介质106可以是只读的,如只读存储器(R0M),或是可读/可写的,如硬盘或闪存。存储器单元104可以是随机存取存储器(RAM)。存储器单元104可以物理上与处理器101集成或集成在处理器101内或在一个或多个独立单元中构造。
[0031]处理器101是计算设备100的控制中心并提供排序和处理设施以执行指令、执行中断操作、提供定时功能和许多其它功能。可选地,处理器101包括一个或多个中央处理器(CPU),例如,如图1所示的CPUO和CPUl。可选地,计算设备100包括一个以上的处理器,例如,如图1所示的处理器101和108。处理器101和108都可以是单核(单CPU)处理器或多核(多CPU)处理器。除非另有说明,描述用来执行任务的处理器或存储器等部件可实施为临时用于在给定时间内执行任务的一般部件或制造用来执行任务的特定部件。本文所使用的术语“处理器”指一个或多个用于处理计算机程序指令等数据的设备、电路和/或处理内核。
[0032]处理器101和/或108或者处理器101和/或108的CPU将执行的程序代码存储在存储器单元104或存储介质106中。可选地,存储介质106中存储的程序代码可以复制到存储器单元104中以便处理器执行。处理器可执行至少一个内核(例如,以LINUZTM、UNIX?、WIND0WS?、ANDR0IDtm、10S?等商标出售的操作系统中的内核),众所周知该内核用来通过控制其它程序或过程的执行、控制与外围设备的通信以及控制计算设备资源的使用来控制计算设备100的操作。
[0033]计算设备100还包括通信接口105,从而直接或通过外部网络与另一设备或系统进行通信。可选地,计算设备100还包括输出设备102和输入设备103。输出设备102与处理器101耦合,并且能够以一种或多种方式显示信息。输出设备102的一个示例是视觉显示设备,例如,液晶显示屏(IXD)、发光二极管(LED)显示器、阴极射线管(CRT)或投影仪。输入设备103也与处理器101耦合,并能够以一种或多种方式接收计算设备100的用户的输入。输入设备103的示例包括鼠标、键盘、触摸屏设备、传感设备等等。
[0034]计算设备100的上述元件可通过数据总线、地址总线、控制总线、扩展总线和本地总线等总线中的任一或任意组合互相耦合。
[0035]计算设备100可以是通用计算设备或应用特定计算设备。作为实用示例,上述计算设备100可为台式计算机、笔记本电脑、网络服务器、个人数字助理(PDA)、移动电话、平板电脑、无线终端设备、电信设备、嵌入系统或具有如图1所示类似结构的任何其它设备。然而,本发明并不仅仅受限于任何特定类型的计算设备。
[0036]图2A描绘了根据本发明实施例的调试系统200。调试系统200包括远程计算机201和宿主计算机202,还可包括存储设备210。应该理解计算机的命名仅为了识别目的,而不应理解为一种限制。远程计算机201存储和运行待调试的程序,而宿主计算机202用于运行调试该程序的进程(即,调试器)。远程计算机201和宿主计算机202都配备了通信接口以互相通信。可选地,两个系统之间的通信通过网络203进行。存储设备210可直接通过通信接口耦合到远程计算机201和/或宿主计算机202,或者通过网络203耦合到远程计算机201和/或宿主计算机202,这样远程计算机201和宿主计算机202中的一个或两者能够访问存储设备210。远程计算机201和宿主计算机202之间使用的通信协议可以是RS-232C、IEEE1394、局域网(LAN)、无线局域网(WLAN)、通用串行总线(USB),或能够提供远程计算机201和宿主计算机202之间的通信链路的任意其它通信协议。
[0037]远程计算机201和/或宿主计算机202可以采用上述介绍的计算设备100的形式实现,例如,通过将特定指令存储在存储器单元104或存储介质106中以及由处理器101和/或108执行这些指令来实现。
[0038]如图2B所示,远程计算机201包括处理器1011、存储器单元1041和存储介质1061等数据存储装置、通信接口 1051,以及可选地包括输出设备1021、输入设备1031和额外处理器
1081。远程计算机201可运行待调试的程序(还可是一个以上的程序),并且根据本发明的实施例执行一个或多个指令(如图2B所示的第一指令、第二指令等)以调试程序。这些指令可存储在存储器单元1041中,而且这些指令可集成在远程计算机的操作系统的内核或内核的插件中。
[0039]通过执行第一指令,远程计算机201生成对应于待调试程序的一个或多个核心转储文件。核心转储文件的生成将由以下事件中的任一或任意组合触发:
[0040]1.运行程序中出现软件相关失败或错误;
[0041 ] 2.运行程序中出现硬件相关失败或错误;
[0042]3.处于预订的检查点
[0043]4.遵照程序中嵌入的指令,
[0044]5.输入设备1031接收的输入或中断;或
[0045 ] 6.通过通信接口 151接收的输入或中断。
[0046]除了上述触发事件之外,触发核心转储文件生成所设置的时间计划表或断点可嵌入待调试的程序中,或嵌入内核或内核的插件中。
[0047]根据第一指令生成的一个或多个核心转储文件可以非常大,并且随着程序运行可重复生成核心转储文件。因此,在宿主计算机202通过分析核心转储文件中的信息开始调试程序之前,至少需要暂时存储生成的核心转储文件。在一个实例中,核心转储文件可存储在远程计算机201的本地数据存储装置中,例如,存储在存储介质1061中或存储器单元1041的某个分区中。在另一实例中,核心转储文件可存储在网络存储设备210中,网络存储设备210在远程计算机201的外部。临时或永久存储计算机可读文件的各种技术在现有技术中是众所周知的,所以这里不再进行详细描述。
[0048]通过执行第二指令,远程计算机201允许宿主计算机202访问生成的核心转储文件。例如,宿主计算机202可接收从远程计算机201传送来的核心转储文件并进行访问,或者访问存储在存储设备210中的核心转储文件而无需将文件传送给宿主计算机202。一个计算机访问另一计算机生成的文件的技术在现有技术中是众所周知的且不再进行详细描述。
[0049]如图2C所示,宿主计算机202包括处理器1012、存储器单元1042和存储介质1062等数据存储装置、通信接口 1052,以及可选地包括输出设备1022、输入设备1032和额外处理器
1082。宿主计算机202根据本发明实施例执行一个或多个指令(如图2C所示的第三指令、第四指令等)以调试远程计算机201中运行的程序。这些指令可存储在存储器单元1042中,而且这些指令可以是独立的指令或集成在调试器或调试器的插件中。
[0050]通过执行第三指令,宿主计算机202获取远程计算机201生成的一个或多个核心转储文件,并且以下文所描述的特定方式将得到的核心转储文件组装到组装的核心转储文件中。远程计算机202还可将组装的核心转储文件转换或适应性地修改到与宿主计算机202中运行的调试器兼容的格式。在一个实例中,如果核心转储文件都存储在远程计算机201中,则它们中的一些或所有文件可能要通过相应的通信接口和可选地通过网络203传送给宿主计算机202。在另一实例中,如果核心转储文件都存储在存储设备210中,则宿主计算机202通过直接访问存储设备210获取一些或所有核心转储文件。
[0051]通过执行第四指令,宿主计算机202按照组装核心转储文件的方式分析组装的核心转储文件来调试远程计算机201中运行的程序。
[0052]假设待调试程序在计算机中运行并使用计算机的数据存储装置动态存储数据和与程序执行相关的其它信息,则核心转储文件在程序执行期间或之后基于数据存储装置的某个区域的快照(即,即时拷贝)生成。核心转储文件包括一些或所有以下信息:
[0053]?基本信息:核心转储文件的标识、版本、类型、大小和地址(数据存储装置中的地址);
[0054].调试信息:生成核心转储文件的理由(例如,内部失败触发、满足预设条件或遵循输入顺序)、生成核心转储文件的时间、待调试程序的名称、至少一项被转储数据和与至少一项被转储数据相关的信息(例如,被转储数据项在核心转储文件中的位置和其大小、地址、标识和属性)。
[0055]关于上述计算机系统200,“至少一项转储数据”可以是远程计算机201的数据存储装置中至少一个数据项的快照。数据项的地址、标识和属性分别是远程计算机201的数据存储装置中数据项的地址、标识和属性。
[0056]至少一项被转储数据可包括虚拟内存区域(VMA)中的至少一个内容。一个VMA包括任一以下项或以下项的任意组合:程序相关的变量、(程序运行时用于动态内存分配的)堆信息、注册信息、内存映射信息和调用栈信息(例如,关于程序的活动子程序的信息),以及数据存储装置中与程序相关的任意其它数据。
[0057]生成一个或多个核心转储文件存在多种方式。在传统解决方案中,生成单个核心转储文件,包含存储装置中与程序执行相关的所有信息,并且将该单个核心转储文件传送给宿主计算机进行调试。单个核心转储文件可以非常大。为了通过单个核心转储文件调试程序,从远程计算机传送单个核心转储文件给宿主计算机会消耗大量带宽和/或很长时间。
[0058]传统解决方案需要传送较大的单个核心转储文件给宿主计算机。这将消耗相当多的系统资源并且可能延迟调试过程。下文给出了对该问题的解决方案:将单个核心转储文件的内容划分成多个部分,这些部分分别存储在一个主核心转储文件和一个或多个从核心转储文件中。生成索引列表(或等同于索引列表的任意其它形式)并将其存储在主核心转储文件中,该索引列表包括识别每个从核心转储文件的信息,以及可选地包括识别每个从核心转储文件中的内容的信息。
[0059]可选地,该索引列表包括一个或多个条目。每个条目包含识别从核心转储文件的信息并且可包含识别从核心转储文件的内容的信息。识别从核心转储文件的信息可包括从核心转储文件的标识和地址中的任一者或任意组合。识别从核心转储文件中内容的可选信息可包括以下项的任一者或任意组合:从核心转储文件中保存的一项被转储数据的标识或地址,以及从核心转储文件和该转储数据项之间的映射关系。
[0060]除了索引列表需要包含在主核心转储文件中之外,可以灵活预定义主核心转储文件和每个从核心转储文件中要包含的信息。以下是主从核心转储文件中内容的一些示例。应了解,本领域技术人员可以在不脱离本发明的精神的情况下做出许多不同的布置。
[0061]在一个实例中,主核心转储文件还包括至少一项关键被转储数据,以及所有或部分以下信息:
[0062]?基本信息:主核心转储文件的标识、版本、类型、大小和地址(数据存储装置中的地址);
[0063].调试信息:生成主核心转储文件的原因,生成主核心转储文件的时间、待调试程序的名称,以及与至少一项关键被转储数据项关联的信息。
[0064]某些被转储数据对于调试来说可能是至关重要的。可以预定义关键数据的构成。可以设置第一过滤器将预定义的关键数据转储到主核心转储文件中。
[0065]可以构造一个或多个从核心转储文件来包括主核心转储文件中未包含的信息,例如,不属于关键数据类别的被转储数据项。可选地,如果要生成一个以上的从核心转储文件,则可以预定义每个从核心转储文件中要包含的信息。第二过滤器可用于将信息相应地转储到不同从核心转储文件中。
[0066]在另一个实例中,待转储到主核心转储文件和一个或多个从核心转储文件中的信息可以在主核心转储文件和多个从核心转储文件之间逻辑地划分。例如,传统核心转储文件的部分或所有数据项可根据它们的类别(例如,调用栈、堆和bin数据)划分成多个最小单元。因此,可以分别构造主核心转储文件和从核心转储文件以根据它们的类别存储一个或多个最小单元。
[0067]可选地,根据每个从核心转储文件的预定大小限制将数据项转储到从核心转储文件中。例如,如果待转储到从核心转储文件中的信息超过该大小限制,则该信息可以划分成多个部分并且将每个部分转储到一个从核心转储文件中。
[0068]可以预定义主核心转储文件和从核心转储文件的格式。例如,可以在生成的主核心转储文件和每个从核心转储文件的末尾附加一个时间戳。
[0069]主核心转储文件可以先传送给宿主计算机或由宿主计算机访问。宿主计算机通过分析主核心转储文件开始调试程序。主核心转储文件中的索引列表和其它信息有助于宿主计算机识别运行程序时发生的问题。为了调试程序,宿主计算机根据索引列表的信息选择性地请求一个或多个生成的从核心转储文件。可选地,宿主计算机可以根据索引列表的信息直接请求一个或多个生成的从核心转储文件而无需进一步分析主核心转储文件(如果主核心转储文件不包含任何被转储数据项)。
[0070]宿主计算机在处理主核心转储文件得到其中的信息之后继续通过分析所获取的从核心转储文件中的信息来调试程序。如果分析所获取的从核心转储文件之后调试不令人满意,则宿主计算机继续根据索引列表中的信息选择性地请求一个或多个生成的从核心转储文件。重复该过程,直到调试结果令人满意或直到分析完所有从核心转储文件。
[0071]分析转储文件和请求更多从核心转储文件的过程可以至少部分地并行执行。例如,接收到的主核心转储文件和第一从核心转储文件被组装到一个组装的核心转储文件中。宿主计算机通过分析组装的核心转储文件来调试程序。如果组装的核心转储文件不包含调试所需的信息,则请求下一从核心转储文件并将其添加到组装的核心转储文件中。宿主计算机继续调试程序,同时请求后续的从核心转储文件并将它们添加到组装的核心转储文件中。
[0072]通常,调试并不需要所有核心转储文件中的所有信息。进行调试的同时选择性地、逐个请求和传送核心转储文件可以减少传送核心转储文件的时间和带宽,并且可以提高调试效率。本领域技术人员熟知识别和消除计算机程序中的漏洞的技术,所以这里将不再深入解释这些技术。
[0073]根据上述技术方案和本发明的实施例,调试过程包括远程计算机执行的步骤和宿主计算机执行的步骤,分别如图3和图4所示。
[0074]在远程计算机侧,图3示出了获取主核心转储文件和一个或多个从核心转储文件以调试程序的过程的流程图。尽管此处所述的过程可以在如图2A所示的调试系统200中实施,远程计算机201和/或宿主计算机202中的一个或两者在调试系统200中采用图1所示的计算设备100的形式,但是绝非仅限于这样的系统和计算设备。
[0075]如图3所示,过程S300包括以下步骤:
[0076]S301:运行待调试程序的远程计算机(例如,图2A中的远程计算机201)生成主核心转储文件和一个或多个从核心转储文件。主核心转储文件包括索引列表。该索引列表包括识别每个从核心转储文件的信息,以及可选地还包括识别每个从核心转储文件中内容的信息。索引列表的每个条目对应于从核心转储文件。一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据。主核心转储文件还可包括一项或多项被转储数据。
[0077]S302:在正在进行的过程中,主核心转储文件和一个或多个从核心转储文件在生成的同时被本地存储在远程计算机或网络存储设备(例如,图2A中的存储设备210)中。
[0078]当生成主核心转储文件时,远程计算机可通知宿主计算机(例如,图2A中的远程计算机202)程序已经准备好调试。不必要等到所有关于程序的数据项已经转储完才开始调试。可以至少部分地同时运行调试器和生成从核心转储文件。
[0079]S304:远程计算机允许宿主计算机访问主核心转储文件。
[0080]在一个实例中,主核心转储文件可以由远程计算机直接通过通信链路(例如,远程计算机201和宿主计算机202的通信接口之间的通信链路、可选地通过图2A中的网络203)发送给宿主计算机。发送主核心转储文件可以是对宿主计算机请求主核心转储文件的响应。对主核心转储文件的请求可包括主核心转储文件的标识和地址中的任一或任意组合。可以在宿主计算机中预定义或设置主核心转储文件的标识和地址。在另一个实例中,主核心转储文件可在远程计算机设定的预定时间内发送给宿主计算机。在又一个实例中,宿主计算机可以从远程计算机(例如,宿主计算机在没有远程计算机协助的情况下通过IEEE 1394等某类通信链路访问远程计算机的数据存储装置)或网络存储设备中提取主核心转储文件。当软件失败或硬件失败严重到足以导致远程计算机无法处理对主核心转储文件的请求或无法执行指令以在预定时间发送主核心转储文件时,从网络存储设备或远程计算机的数据存储装置中提取核心转储文件是非常有用的。可选地,当远程计算机包括多个处理器或多个CPU(例如,图2B中的处理器1011和处理器1081)时,S301、S302和S304中的过程可以至少部分地并行执行,即,不同的CPU可以同时执行与S301、S302和S304相关的不同过程。例如,主核心转储文件和一个或多个从核心转储文件可以并行生成。在主核心转储文件生成之后,生成从核心转储文件和存储从核心转储文件可以并行执行,从而直接将具有关键信息的主核心转储文件提供给宿主计算机,这样宿主计算机立即启动调试进程。
[0081]S306:远程计算机允许宿主计算机访问第一从核心转储文件以进行调试。
[0082]宿主计算机待访问的第一从核心转储文件可以是或可以不是最早生成的从核心转储文件。在这些从核心转储文件之中,宿主计算机可以基于索引列表中的信息确定它要访问的从核心转储文件。远程计算机在传送第一从核心转储文件给宿主计算机之前要接收宿主计算机对第一从核心转储文件的请求。当宿主计算机确定调试过程需要其它信息时,可从宿主计算机发送对第一从核心转储文件的请求。在一个实例中,宿主计算机在调试主核心转储文件时要确定调试所需要的某个数据(例如,一项被转储数据),而该数据根据主核心转储文件的索引列表中的信息存储在某个从核心转储文件中。宿主计算机随后发送对第一从核心转储文件的请求给远程计算机,请求访问该从核心转储文件。在另一个实例中,当宿主计算机确定调试过程需要其它信息时,宿主计算机可在生成的从核心转储文件中随机地或根据索引列表中降序或升序选择第一从核心转储文件。对第一从核心转储文件的请求可包括第一核心转储文件的标识和地址中的任一或任意组合。远程计算机可根据请求获取和发送第一从核心转储文件。
[0083]还可基于远程计算机中设定的预定时间传送第一从核心转储文件。例如,从核心转储文件可在多个预定时间点按顺序(例如,以从核心转储文件的标识、地址或优先级的顺序)发送。远程计算机发送从核心转储文件以及宿主计算机调试程序可以并行执行,从而减少总的调试时间。
[0084]与主核心转储文件一样,第一从核心转储文件还可由宿主计算机直接从远程计算机或从网络存储设备中提取。当软件失败或硬件失败严重到足以导致远程计算机无法处理对从核心转储文件的请求或无法执行指令以在预定时间发送从核心转储文件时,从远程计算机或网络存储设备中提取从核心转储文件是特别有用的。
[0085]可选地,在步骤S308中,远程计算机还允许宿主计算机访问下一从核心转储文件和随后的从核心转储文件以进行调试。
[0086]当宿主计算机确定需要其它信息进行调试,并且由宿主计算机组装到组装的核心转储文件中的接收到的主核心转储文件和第一从核心转储文件不包含该信息时,可传送下一从核心转储文件以响应宿主计算机对从核心转储文件的另一请求。
[0087]可重复步骤S308,直到传送完所有从核心转储文件或接收不到宿主计算机对从核心转储文件的进一步请求。
[0088]或者,还可基于远程计算机中设置的时间计划表传送下一和后续的从核心转储文件。
[0089]远程计算机可根据某些指令(例如,参见图2B如上所述的第一和第二指令)执行步骤S301至S308。
[0090]在宿主计算机侧,图4示出了分析宿主计算机中的主从核心转储文件的过程的流程图。尽管此处所述的过程可以在如图2A所示的调试系统200中实施,远程计算机201和宿主计算机202中的一个或两者在调试系统200中采用图1所示的计算设备100的形式,但是绝非仅限于这样的系统或计算设备。
[0091]如图4所示,过程S400包括以下步骤:
[0092]S401:宿主计算机(例如,图2A中的宿主计算机202)获取远程计算机(例如,图2A中的远程计算机201)生成的主核心转储文件。主核心转储文件包括如上所述的索引列表。索引列表的每个条目对应于第二计算设备生成或待生成的一个或多个从核心转储文件的一个从核心转储文件。
[0093]宿主计算机获取主核心转储文件的实例已经在步骤S304中描述且不再重复。
[0094]可选地,S402:宿主计算机通过先分析主核心转储文件开始调试对应于主核心转储文件的程序。例如,当主核心转储文件包括至少一项被转储数据或其它调试相关信息时,宿主计算机分析至少一项转储文件或其它调试相关信息以调试程序。
[0095]S404:宿主计算机根据索引列表中的信息从远程计算机中获取第一从核心转储文件。
[0096]宿主计算机选择和获取第一从核心转储文件的实例已经在步骤S306中描述且不再重复。
[0097]S406:宿主计算机将主核心转储文件和第一从核心转储文件组装到组装的核心转储文件中。
[0098]该组装可包括组合主核心转储文件和第一从核心转储文件中记录的多项被转储数据,以及根据组合的项目适应性地修改组装的核心转储文件的基本信息,例如,更新组装的核心转储文件中组合的转储文件项目的位置。
[0099]S408:宿主计算机通过分析组装的核心转储文件开始调试程序。
[0100]宿主计算机通过运行调试器调试程序。调试器可以是任意熟知的调试程序。
[0101]组装的核心转储文件的格式应该兼容调试器支持的文件格式。如果组装的核心转储文件的文件格式不兼容调试器支持的文件格式,则在步骤S406中将组装的核心转储文件的格式适应性地修改为调试器支持的格式。可选地在步骤S410中,宿主计算机还从远程计算机中获取下一从核心转储文件,通过添加下一从核心转储文件的内容更新当前组装的核心转储文件,以及提供更新的组装的核心转储文件给调试器。当确定基于当前组装的核心转储文件的调试结果不符合某个预定义标准(例如,组装的核心转储文件没有包含足够的信息以调试第二计算设备中运行的程序)时执行步骤S410,而且步骤S410和S408可同时或至少部分地并行执行。
[0102]可重复步骤S408和S410,直到获取远程计算机生成的所有从核心转储文件,或基于当前组装的核心转储文件的调试结果符合某个预定义标准。
[0103]宿主计算机可根据某些指令(例如,参见图2C如上所述的第三和第四指令)执行步骤S401至S410。
[0104]通过在调试系统中实施上述公开的过程,可以避免立即将所有被转储数据从远程计算机传送给宿主计算机,并且可以在较早时候开始调试,同时传送从核心转储文件至少部分地与调试并行执行。另外,当确定不需要其它信息时,例如,根据已经传送的主核心转储文件和/或从核心转储文件识别缺陷时,可以终止传送其余的从核心转储文件,以减少传送被转储数据的平均时间并显著提高调试效率。
[0105]图5描绘了根据本发明的另一实施例的示例性调试过程。尽管这里所述的方法可在如图2A所示的调试系统200中实施,远程计算机201或宿主计算机202中的一个或两者在调试系统200中采用图1所示的计算设备100,但是绝非仅限于这样的系统或计算设备。要了解并不需要图5中的所有步骤,并且可以按顺序、并发、并行、同时等方式执行这些步骤。
[0106]在步骤S501中,运行程序的远程计算机通过运行程序中内部失败或错误的触发或根据内部或外部指令获得存储器单元的某个区域的快照。快照中的信息与程序的执行相关,并将存储在一个或多个核心转储文件中。将由宿主计算机分析这些核心转储文件。
[0107]在步骤S502中,远程计算机确定是否启用分割转储功能(S卩,生成主核心转储文件和至少一个从核心转储文件的功能)。如果不启用分割转储功能,则远程计算机执行步骤S503;如果启用分割转储功能,则远程计算机执行步骤S504。
[0108]S503:远程计算机生成具有快照中信息的单个核心转储文件。单个核心转储文件的生成和后续调试程序的过程与现有技术中的类似且不再描述。
[0109]S504:远程计算机生成具有快照中信息的主核心转储文件和一个或多个从核心转储文件。一个或多个从核心转储文件均包括至少一项与待调试程序相关的被转储数据。主核心转储文件包括索引列表并且还包括一项或多项被转储数据和/或其它调试相关信息。索引列表的每个条目对应于一个从核心转储文件。
[0110]S505(可选):远程计算机确定核心转储文件的模式是否设置。如果设定模式,则远程计算机执行步骤S506。如果未设置模式,则远程计算机执行步骤S507。
[0111]S506(可选):远程计算机将模式应用到每个主从核心转储文件。例如,根据该模式可在生成的主从核心转储文件的末尾附加时间戳(例如,hh: mm: ss)。远程计算机应用模式之后可执行步骤S507。
[0112]S507:远程计算机使能宿主计算机访问生成的主从核心转储文件。这可以通过各种方式完成。例如,远程计算机可将一个或多个从核心转储文件临时存储在存储设备中(例如,耦合到远程计算机的本地存储设备或网络存储设备中),并且将主核心转储文件传送给宿主计算机。
[0113]生成和传送主核心转储文件可以至少部分地与生成和存储一个或多个从核心转储文件并行执行。
[0114]S508:运行调试器的宿主计算机能够访问远程计算机生成的主从核心转储文件,还检索和加载主核心转储文件。
[0115]宿主计算机如何获取主核心转储文件的实例已经在步骤S304中描述且不再重复。
[0116]S509:宿主计算机在加载主核心转储文件之后根据索引列表中的信息识别并从一个或多个从核心转储文件中获取从核心转储文件。
[0117]宿主计算机如何获取第一从核心转储文件的实例已经在步骤S306中描述且不再重复。
[0118]如果宿主计算机确定调试所需的某信息未存储在先前获取的核心转储文件中,则重复步骤S509获取下一个或多个从核心转储文件。
[0119]S510:步骤S509之后,宿主计算机将主核心转储文件和获取的从核心转储文件组装到组装的核心转储文件中。
[0120]S511:宿主计算机加载组装的核心转储文件以进行调试。可选地,当宿主计算机确定调试所需的某信息未存储在组装的核心转储文件中时,宿主计算机可返回执行步骤S509以获取另一从核心转储文件。
[0121]步骤S508至S511可以至少部分地与生成和存储从核心转储文件的步骤(S504-S507)并行执行,步骤S509可以至少部分地与组装和调试的步骤(S510和S511)并行执行,从而节省总的调试时间。
[0122]图6描绘了示例性主核心转储文件和从核心转储文件(从核心转储文件I至η)。主核心转储文件包括核心元数据字段并可选地包括关键信息数据字段。核心元数据字段用于存储上文提到的部分或全部基本信息以及部分调试信息。例如,核心元数据字段可包括以下项的任一或任意组合:主核心转储文件和从核心转储文件的基本信息、存储在关键信息数据字段中的至少一项被转储数据的标识和地址,以及从核心转储文件的块头列表(对应于上文提到的索引列表)。关键信息数据字段用于存储至少一项与待调试程序相关的被转储数据。至少一项被转储数据可以是虚拟内存区域(VMA)的内容。该内容可以是如以下项中的任一或任意组合:程序相关的变量、堆信息、注册信息、内存映射信息和调用栈信息相关的变量,或可以是与程序相关的存储器单元中的任意其它数据。
[0123]核心元数据字段可包括主文件头、块头列表和至少一个关键信息程序头(例如,关键信息程序头I至η)。
[0124]主文件头可存储整个核心转储文件集(S卩,主核心转储文件和一个或多个从核心转储文件)的基本信息。基本信息可包括以下项中的任一或任意组合:关于主核心转储文件和/或从核心转储文件的标识、版本、类型、大小和地址、待调试程序的名称,以及生成主核心转储文件的原因和时间。主文件头的格式与可执行连接格式(ELF)头的格式类似。
[0125]块头列表包括从核心转储文件的块头列表,其中块头列表的字段与从核心转储文件的字段相同。块头列表可用作至少一个从核心转储文件的索引列表以映射从核心转储文件。例如,宿主计算机使用块头列表来确定从核心转储文件拥有的被转储数据项和其类型。
[0126]关键信息程序头包括以下项的任一或任意组合:存储在主核心转储文件中的一项被转储数据的位置(例如,偏移),第一被转储数据项的大小、地址(例如,存储器的物理地址或VMA的虚拟地址)、标识和属性。可选地,第一项被转储数据是远程计算机的存储器单元(例如,RAM)中第一数据的快照。第一项被转储数据的地址、标识和属性分别为远程计算机的存储器中第一数据的地址、标识和属性。
[0127]同样如图6所示,从核心转储文件包括块元数据字段和块数据字段。块元数据字段用于存储上文提到的部分或全部基本信息以及部分调试信息,例如,以下项中的任一或任意组合:从核心转储文件的基本信息、存储在块数据字段中的至少一项被转储数据的标识和地址。块数据字段用于存储至少一项与待调试程序相关的被转储数据,例如,虚拟内存区域(VMA)的至少一条内容。
[0128]块元数据字段包括块头。块头包括以下项中的任一或任意组合:从核心转储文件的标识(例如,块标识(ID)),存储在从核心转储文件中的至少一项转储文件的位置(例如,偏移),以及至少一项被转储数据的地址(例如,VMA虚拟地址)、大小和属性(例如,具有VMA信息的标记,如存储器中VMA的访问权限和VMA映射类型等)。可选地,至少一项被转储数据是远程计算机的存储器单元(例如,RAM)中的第一数据的快照。至少一项被转储数据的地址、标识和属性分别为远程计算机的存储器中第一数据的地址、标识和属性。
[0129]尽管该实施例公开了应用到以LINUZTM、UNIX?等商标出售的操作系统中的主核心转储文件和从和核心转储文件结构,本领域技术人员可在不脱离本发明的范围的情况下修改该结构以适应其它操作系统。
[0130]图7根据图6所示的数据结构描绘了基于主核心转储文件和一个或多个从核心转储文件的组装的核心转储文件。
[0131]如图7所示,组装的核心转储文件包括核心转储文件ELF头、一个或多个核心转储文件程序头(例如,程序头I至η),以及数据字段。
[0132]核心转储文件ELF头可存储组装的核心转储文件的基本信息。基本信息可包括以下项中的任一或任意组合:关于组装的核心转储文件的标识、版本、类型、大小和地址。核心转储文件中的信息可在组装期间从主核心转储文件中的核心元数据字段和从核心转储文件中的块元数据添加。
[0133]核心转储文件程序头包括存储在主核心转储文件中的一项被转储数据的位置(例如,偏移),数据字段中存储的一个被转储数据项的大小、地址(例如,存储器的物理地址或VMA的虚拟地址)、标识和属性。核心转储文件程序头中的信息可在组装期间从主核心转储文件中的关键信息程序头和从核心转储文件中的块头添加。
[0134]数据字段用于存储至少一项与待调试程序相关的被转储数据。数据字段中至少一项数据可在组装期间从主核心转储文件中的关键信息数据字段和从核心转储文件中的块数据字段添加。
[0135]可选地,在组装期间,来自主核心转储文件和从核心转储文件的信息适用于组装的核心转储文件。例如,源于主核心转储文件或从核心转储文件的被转储数据的原始偏移可以根据组装的核心转储文件中被转储数据的新位置改变。
[0136]本发明的技术解决方案还可在调试系统中实现,该调试系统在又一实施例中描述。调试系统包括如图8所示的装置800和如图9所示的装置900。
[0137]图8为装置800的简化功能方框图,装置800用于运行程序和生成与该程序相关的核心转储文件。该程序待调试。
[0138]装置800包括核心转储文件生成单元801、访问使能单元802以及请求接收单元803。
[0139]核心转储文件生成单元801用于生成主核心转储文件和一个或多个从核心转储文件,其中主核心转储文件包括索引列表,以及索引列表的每个条目对应于一个或多个从核心转储文件中的从核心转储文件。一个或多个从核心转储文件均包括至少一项与程序相关的被转储数据。主从核心转储文件的生成可由以下事件触发:运行程序中出现软件相关失败或错误、运行程序中出现硬件相关失败或错误、处于预订的检查点、遵照程序中嵌入的指令、接收的输入或中断等。
[0140]访问使能单元802用于使能另一装置(例如,装置900)访问主核心转储文件。
[0141]请求接收单元803用于接收另一装置(例如,上述实施例中的主机计算设备)对第一从核心转储文件的请求,其中所述第一从核心转储文件是根据索引列表中的信息从所述一个或多个从核心转储文件中选择的。
[0142]访问使能单元802还用于使能另一装置访问第一从核心转储文件。主核心转储文件和第一从核心转储文件由另一装置组装到组装的核心转储文件中,并且另一装置分析组装的核心转储文件以调试程序。
[0143]可选地,主核心转储文件还包括以下项中的任一或任意组合:主核心转储文件的标识、版本、类型、大小和地址,至少一项被转储数据中的第一项,以及第一项被转储数据在主核心转储文件中的位置和其大小、地址、标识和属性。
[0144]可选地,第一项被转储数据包括以下项中的任一和任意组合:调用栈信息、堆信息,以及程序相关的注册信息。
[0145]可选地,第一从核心转储文件存储与程序相关的不同于第一项被转储数据的第二项被转储数据。
[0146]可选地,对应于索引列表中的第一从核心转储文件的第一条目包括:第一从核心转储文件的标识和地址中的任一或任意组合、第二项被转储数据的标识和地址中的任一或任意组合,以及第一从核心转储文件和第二项被转储数据之间的映射关系。
[0147]可选地,请求包括第一从核心转储文件的标识和地址中的任一或任意组合。
[0148]应注意,装置800以功能单元的形式展示。在不受限制的情况下,本文所使用的术语“单元”可指执行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、(共享、专用或组)处理器以及存储器,组合逻辑电路,和/或提供所述功能的其它合适的部件。在非常特定的示例中,本领域技术人员会了解到装置800可采取图2B的远程计算机201的形式。核心转储文件生成单元801可以通过处理器1011和存储器单元1041实现,具体地通过处理器1001执行存储器单元1041中的第一指令以生成主核心转储文件和一个或多个与待调试程序相关的从核心转储文件来实现。访问使能单元802和请求接收单元803可以通过处理器1011、存储器单元1041和通信接口 1051实现,具体地通过处理器1011执行存储器单元1041中的第二指令以使通信接口 1051传送主核心转储文件和一个或多个从核心转储文件并接收主机计算设备的一个或多个请求。
[0149]图9为装置900的简化方框图,装置900用于调试远程计算设备中运行的程序。
[0150]装置900包括核心转储文件获取单元901和调试单元902。
[0151]核心转储文件获取单元901用于获取由另一装置(例如,上述实施例中的装置800或远程计算设备)生成的主核心转储文件。主核心转储文件包括索引列表,索引列表的每个条目对应于另一装置生成或待生成的一个或多个从核心转储文件的一个从核心转储文件。一个或多个从核心转储文件均包括至少一项与程序相关的被转储数据。
[0152]核心转储文件获取单元901还用于根据索引列表中的信息从一个或多个从核心转储文件中选择第一从核心转储文件并获取该从核心转储文件。
[0153]调试单元902用于将主核心转储文件和第一从核心转储文件组装到组装的核心转储文件中,以及通过分析组装的核心转储文件执行调试另一装置中运行的程序的过程。
[0154]可选地,主核心转储文件还包括以下项中的任一或任意组合:主核心转储文件的标识、版本、类型、大小和地址,至少一项被转储数据中的第一项,以及第一项被转储数据在主核心转储文件中的位置和其大小、地址、标识和属性。
[0155]可选地,第一项被转储数据包括以下项中的任一和任意组合:调用栈信息、堆信息,以及程序相关的注册信息。
[0156]可选地,第一从核心转储文件存储与程序相关的不同于第一项被转储数据的第二项被转储数据。
[0157]可选地,对应于索引列表中的第一从核心转储文件的第一条目包括:第一从核心转储文件的标识和地址中的任一或任意组合、第二项转储数据的标识和地址中的任一或任意组合,以及第一从核心转储文件和第二项转储数据之间的映射关系。
[0158]可选地,调试单元902还用于在选择第一从核心转储文件之前通过分析主核心转储文件为远程计算设备中运行的程序执行初始调试过程。
[0159]可选地,核心转储文件获取单元901根据索引列表中的信息选择第一从核心转储文件并获取它包括:根据初始调试过程的结果(例如,初始调试过程的结果只是主核心转储文件未包含足够的调试程序的信息)确定调试是否需要第二项被转储数据,根据第一从核心转储文件和第二项被转储数据和第二被转储数据的标识和地址中的任一或任意组合的映射关系确定索引列表中第一从核心转储文件的标识和地址中的任一或任意组合,以及根据第一从核心转储文件的标识和地址中的任一或任意组合获取第一从核心转储文件。
[0160]可选地,核心转储文件获取单元901根据第一从核心转储文件的标识和地址中的任一或任意组合获取第一从核心转储文件包括:向另一装置发送具有第一从核心转储文件的标识和地址中的任一或任意组合的第一请求,以及从另一装置接收第一从核心转储文件以响应第一请求。
[0161]可选地,核心转储文件获取单元901根据第一从核心转储文件的标识和地址中的任一或任意组合获取第一从核心转储文件包括:访问另一装置或耦合到另一装置的存储设备,以及根据第一从核心转储文件的标识和地址中的任一或任意组合从存储设备中获取第一从核心转储文件。
[0162]可选地,调试单元902将主核心转储文件和第一从核心转储文件组装到组装的核心转储文件中包括:组合第一项被转储数据和第二项被转储数据,以及更新组装的核心转储文件中的组合的第一项被转储数据和第二项被转储数据的位置。
[0163]注意,装置900在这里以功能单元的形式展示。在不受限制的情况下,本文所使用的术语“单元”可指执行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、(共享、专用或组)处理器以及存储器,组合逻辑电路,和/或提供所述功能的其它合适的部件。在非常特定的示例中,本领域技术人员会了解到装置900可采取图2C中宿主计算机202的形式。核心转储文件获取单元901可以通过处理器1012、存储器单元1042和通信接口 1052实现,具体地通过处理器1002执行存储器单元1042中的第三指令以通过通信接口 1052从远程计算机中获取主核心转储文件和至少一个从核心转储文件来实现。调试单元902可以通过处理器1012和存储器1042实现,具体地通过处理器1012执行存储器单元1042中的第四指令以执行调试和组装来实现。
[0164]本领域技术人员将认识到现有技术已经进步到以下程度:系统各方面的硬件和软件实施方式之间的差别很小,硬件或软件的使用通常(但不总是,因为在某些环境中选择硬件还是软件变得很重要)是一种权衡成本和效率的设计选择。本领域技术人员将了解存在很多可以实施本文所述的过程和/或系统和/或其它技术的工具(例如,硬件、软件和/或固件),并且优选工具将随着部署过程和/或系统和/或其它技术的环境而变化。
[0165]本领域普通技术人员应该了解本申请的所有或部分标的物可在结合硬件和/或固件的软件中实施。例如,本文描述的标的物可在一个或多个处理器执行的软件中实施。在一项示例性实施方式中,本文描述的标的物可使用存储有计算机可执行指令的非瞬时计算机可读介质实施,当计算机处理器执行该计算机可执行指令时,该指令控制计算机执行步骤。适于实施本文描述的标的物的示例计算机可读介质包括非瞬时计算机可读介质,例如磁盘存储器设备、芯片存储器设备、可编程逻辑设备和专用集成电路。另外,实施本文描述的标的物的计算机可读介质可位于单个设备或计算平台上,或可在多个设备或计算平台上分发。
[0166]最后,应了解上述实施例仅仅用于阐释,并不限于本申请的技术方案。尽管参考上述优选实施例对本申请进行详细描述,但是应了解,所属领域的技术人员可在不脱离本申请和所附权利要求书的范围的情况下,做出各种修改、变更或等同替换。
【主权项】
1.一种第一计算设备调试第二计算设备中运行的程序的方法,其特征在于,包括: 所述第一计算设备获取所述第二计算设备生成的主核心转储文件,其中所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述第二计算设备生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据; 所述第一计算设备根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件; 所述第一计算设备获取所述选择的第一从核心转储文件;以及 所述第一计算设备将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中, 其中所述组装的核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。2.根据权利要求1所述的方法,其特征在于,进一步包括: 所述第一计算设备确定所述组装的核心转储文件是否包含足够的信息用于调试所述第二计算设备中运行的所述程序; 如果所述组装的核心转储文件未包含足够的信息用于调试所述第二计算设备中运行的所述程序,所述第一计算设备根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第二从核心转储文件并获取所述选择的第二从核心转储文件;以及 所述第一计算设备更新所述组装的核心转储文件以包含所述第二从核心转储文件中的信息。 其中所述更新的组装的核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。3.根据权利要求2所述的方法,其特征在于,进一步包括: 重复以下过程:确定所述更新的组装的核心转储文件是否包含足够的信息用于调试所述程序;如果所述更新的组装的核心转储文件未包含足够的信息用于调试所述程序,获取后续从核心转储文件;更新所述组装的核心转储文件,直到获取足够的信息用于调试所述程序或获取所述第二计算设备生成的所有从核心转储文件。4.根据权利要求1所述的方法,其特征在于,所述主核心转储文件进一步包括第一项被转储数据。5.根据权利要求4所述的方法,其特征在于,进一步包括: 所述第一计算设备执行初始调试过程以通过分析所述主核心转储文件调试所述第二计算设备中运行的所述程序。6.根据权利要求5所述的方法,其特征在于,所述第一从核心转储文件存储与所述主核心转储文件中的所述第一项被转储数据不同的第二项被转储数据。7.根据权利要求1所述的方法,其特征在于,对应于所述第一从核心转储文件的所述索引列表中的条目包括:所述第一从核心转储文件的标识和地址中的至少一个、一项被转储数据的标识和地址中的至少一个,以及所述第一从核心转储文件和该一项转储数据之间的映射关系。8.—种使能第一计算设备调试第二计算设备中运行的程序的方法,其特征在于,包括: 所述第二计算设备生成主核心转储文件和一个或多个从核心转储文件,其中所述主核心转储文件包括索引列表,所述索引列表中的每个条目对应于所述一个或多个从核心转储文件的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据; 所述第二计算设备使能所述第一计算设备访问所述主核心转储文件; 所述第二计算设备接收所述第一计算设备对第一从核心转储文件的请求,其中所述第一从核心转储文件是根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择的;以及 所述第二计算设备使能所述第一计算设备访问所述第一从核心转储文件, 其中所述主核心转储文件和所述第一从核心转储文件由所述第一计算设备组装到组装的核心转储文件中,以及所述组装的核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。9.根据权利要求8所述的方法,其特征在于,生成所述主核心转储文件和一个或多个从核心转储文件由以下事件中的至少一个触发: 运行程序中出现软件相关失败或错误; 运行程序中出现硬件相关失败或错误; 处于预订的检查点; 遵照程序中嵌入的指令;以及 所述第二计算设备接收的输入或中断。10.根据权利要求8或9所述的方法,其特征在于,所述主核心转储文件进一步包括第一项被转储数据。11.根据权利要求10所述的方法,其特征在于,所述第一从核心转储文件存储与所述主核心转储文件中的所述第一项被转储数据不同的第二项被转储数据。12.根据权利要求8所述的方法,其特征在于,对应于所述第一从核心转储文件的所述索引列表中的条目包括:所述第一从核心转储文件的标识和地址中的至少一个、一项被转储数据的标识和地址中的至少一个,以及所述第一从核心转储文件和该一项转储数据之间的映射关系。13.根据权利要求12所述的方法,其特征在于,所述请求包括所述第一从核心转储文件的标识和地址中的至少一个。14.一种用于调试第二计算设备中运行的程序的第一计算设备,其特征在于,包括: 存储设备,用于存储计算机可执行程序代码; 通信接口;以及 处理器,与所述存储设备和所述通信接口耦合; 其中所述程序代码包括指令,当所述处理器执行所述指令时,所述指令致使所述处理器执行以下操作: 通过所述通信接口获取所述第二计算设备生成的主核心转储文件,其中所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述第二计算设备生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据; 根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件。 通过所述通信接口获取所述选择的第一从核心转储文件;以及将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中,其中所述组装的核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。15.根据权利要求14所述的第一计算设备,其特征在于,所述程序代码进一步包括指令,当所述处理器执行所述指令时,所述指令致使所述处理器进行以下操作: 确定所述组装的核心转储文件是否包含足够的信息用于调试所述第二计算设备中运行的所述程序; 如果所述组装的核心转储文件未包含足够的信息用于调试所述第二计算设备中运行的所述程序,根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第二从核心转储文件并获取所述选择的第二从核心转储文件;以及 更新所述组装的核心转储文件以包含所述第二从核心转储文件中的信息, 其中所述更新的核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。16.根据权利要求15所述的第一计算设备,其特征在于,所述程序代码进一步包括指令,当所述处理器执行所述指令时,所述指令致使所述处理器进行以下操作: 重复以下过程:确定所述更新的组装的核心转储文件是否包含足够的信息用于调试所述程序;如果所述更新的组装的核心转储文件未包含足够的信息用于调试所述程序,获取后续从核心转储文件;更新所述组装的核心转储文件,直到获取足够的信息用于调试所述程序或获取所有由所述第二计算设备生成的从核心转储文件。17.一种用于运行第一计算设备待调试的程序的第二计算设备,其特征在于,包括: 存储设备,用于存储计算机可执行程序代码; 通信接口;以及 处理器,与所述存储设备和所述通信接口耦合; 其中所述程序代码包括指令,当所述处理器执行所述指令时,所述指令致使所述处理器执行以下操作: 生成主核心转储文件和一个或多个从核心转储文件,其中所述主核心转储文件包括索引列表,所述索引列表中的每个条目对应于所述一个或多个从核心转储文件的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据; 使能所述第一计算设备通过所述通信接口访问所述主核心转储文件, 接收所述第一计算设备对第一从核心转储文件的请求,其中所述第一从核心转储文件是根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择的;以及 使能所述第一计算设备通过所述通信接口访问所述第一从核心转储文件,其中所述主核心转储文件和所述第一从核心转储文件由所述第一计算设备组装到组装的核心转储文件中,以及所述组装的从核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。18.根据权利要求17所述的第二计算设备,其特征在于,生成所述主核心转储文件和一个或多个从核心转储文件由以下事件中的至少一个触发: 运行程序中出现软件相关失败或错误; 运行程序中出现硬件相关失败或错误; 处于预订的检查点; 遵照程序中嵌入的指令;以及 所述第二计算设备接收的输入或中断。19.根据权利要求17或18所述的第二计算设备,其特征在于,所述主核心转储文件进一步包括第一项被转储数据。20.根据权利要求19所述的第二计算设备,其特征在于,所述第一从核心转储文件存储与所述主核心转储文件中的所述第一项被转储数据不同的第二项被转储数据。21.根据权利要求17所述的第二计算设备,其特征在于,对应于所述第一从核心转储文件的所述索引列表中的条目包括:所述第一从核心转储文件的标识和地址中的至少一个、一项被转储数据的标识和地址中的至少一个,以及所述第一从核心转储文件和该一项转储数据之间的映射关系。22.根据权利要求21所述的第二计算设备,其特征在于,所述请求包括所述第一从核心转储文件的标识和地址中的至少一个。23.—种存储程序代码的非瞬时计算机可读介质,第一计算设备执行所述程序代码以调试第二计算设备中运行的程序,其特征在于,所述程序代码包括: 获取所述第二计算设备生成的主核心转储文件的指令,其中所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述第二计算设备生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据; 根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件的指令; 获取所述选择的第一从核心转储文件的指令;以及 将所述主核心转储文件和所述第一从核心转储文件组装到组装的核心转储文件中的指令, 其中所述组装的核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。24.—种存储程序代码的非瞬时计算机可读介质,运行第一计算设备待调试的程序的第二计算设备执行所述程序代码,其特征在于,所述程序代码包括: 生成主核心转储文件和一个或多个从核心转储文件的指令,其中所述主核心转储文件包括索引列表,所述索引列表中的每个条目对应于所述一个或多个从核心转储文件的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据; 使能所述第一计算设备访问所述主核心转储文件的指令; 接收所述第一计算设备对第一从核心转储文件的请求的指令,其中所述第一从核心转储文件是根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择的;以及 使能所述第一计算设备访问所述第一从核心转储文件的指令, 其中所述主核心转储文件和所述第一从核心转储文件由所述第一计算设备组装到组装的核心转储文件中,以及所述组装的核心转储文件被所述第一计算设备分析以调试所述第二计算设备中运行的所述程序。25.—种调试另一装置中运行的程序的装置,其特征在于,包括核心转储文件获取单元和调试单元, 其中所述核心转储文件获取单元用于获取所述另一装置生产的主核心转储文件,所述主核心转储文件包括索引列表,所述索引列表的每个条目对应于所述另一装置生成或待生成的一个或多个从核心转储文件中的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据, 所述核心转储文件获取单元进一步用于根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择第一从核心转储文件并获取所述第一从核心转储文件;以及所述调试单元用于将主核心转储文件和第一从核心转储文件组装到组装的核心转储文件中,以及通过分析组装的核心转储文件执行调试过程以调试所述另一装置中运行的程序。26.一种装置,运行另一装置待调试的程序,其特征在于,包括核心转储文件生成单元、访问使能单元以及请求接收单元; 其中所述核心转储文件生成单元生成主核心转储文件和一个或多个从核心转储文件,所述主核心转储文件包括索引列表,所述索引列表中的每个条目对应于所述一个或多个从核心转储文件的一个从核心转储文件,以及所述一个或多个从核心转储文件均包括至少一项与所述程序相关的被转储数据, 所述访问使能单元用于使能所述第一装置访问所述主核心转储文件, 所述请求接收单元用于接收所述另一装置对第一从核心转储文件的请求,其中所述第一从核心转储文件是根据所述索引列表中的信息从所述一个或多个从核心转储文件中选择的;以及 所述访问使能单元进一步用于使能另一装置访问所述第一从核心转储文件, 所述主核心转储文件和所述第一从核心转储文件由所述另一装置组装到组装的核心转储文件中,并且所述组装的核心转储文件被所述另一装置分析以调试所述程序。27.—种主核心转储文件,由第一计算设备用来调试第二计算设备中运行的程序,其特征在于,包括: 核心元数据字段,用于存储与所述第二计算设备生成的所述程序相关的一个或多个从核心转储文件的索引列表, 其中所述索引列表的每个条目对应于所述一个或多个从核心转储文件中的一个从核心转储文件, 以及 所述第一计算设备根据所述索引列表中的信息选择所述一个或多个从核心转储文件中的第一从核心转储文件,以及获取所述第二计算设备生成的所述第一从核心转储文件以执行调试过程。28.根据权利要求27所述的主核心转储文件,其特征在于,所述主核心转储文件进一步包括关键信息数据字段,用于存储与所述第二计算设备生成的所述程序相关的第一项被转储数据。29.根据权利要求28所述的主核心转储文件,其特征在于,所述第一项被转储数据包括以下项中的至少一个:调用栈信息、堆信息,以及程序相关的注册信息。30.根据权利要求28或29所述的主核心转储文件,其特征在于,所述第一从核心转储文件存储与所述主核心转储文件中的所述第一项被转储数据不同的第二项被转储数据。31.根据权利要求30所述的主核心转储文件,其特征在于,所述索引列表中对应于所述第一从核心转储文件的条目包括:所述第一从核心转储文件的标识和地址中的至少一个、第二项被转储数据的标识和地址中的至少一个,以及所述第一从核心转储文件和第二项转储数据之间的映射关系。32.根据权利要求31所述的主核心转储文件,其特征在于,所述第一计算设备根据所述索引列表中的信息选择所述一个或多个从核心转储文件中的所述第一从核心转储文件并获取所述第一从核心转储文件包括: 所述第一计算设备根据所述主核心转储文件上调试过程的结果确定调试需要所述第二项被转储数据,根据所述第一从核心转储文件和第二项被转储数据之间的所述映射关系确定所述索引列表中所述第一从核心转储文件的标识和地址中的至少一个,以及所述第二项被转储数据的标识和地址的至少一个;以及根据所述第一从核心转储文件的标识和地址中的至少一个获取所述第一从核心转储文件。
【文档编号】G06F11/36GK106030546SQ201480076384
【公开日】2016年10月12日
【申请日】2014年2月28日
【发明人】伊凡·阿尔·瑞赫曼, 普拉森纳·文卡特斯·拉玛穆尔蒂, 奈尔·撒尼尔·库马尔·迪瓦卡然, 阿曼·沙黒
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1