首页> 中国专利> 一种基于运行快照序列的并行程序重现调试方法

一种基于运行快照序列的并行程序重现调试方法

摘要

本发明公开了一种基于运行快照序列的并行程序重现调试方法,在并行程序运行前,由用户执行在程序运行中对调试会产生帮助的关键点;在并行程序执行的过程中,针对用户指定的每一个关键点都保存一个快照,多个快照形成快照序列。在并行程序执行结束后,进入重放阶段,向用户展示快照信息以恢复出程序在设定关键点的运行场景。本发明提出的运行快照序列方法实际上将并行程序的调试执行从一个物理上的实际执行转化为了一个逻辑上的概念执行,这也是本发明提出的方法与传统技术方案的一个最大不同。本发明提出的运行快照序列方法具有实现简单、使用灵活和额外代价小这三个主要优势。

著录项

  • 公开/公告号CN104461876A

    专利类型发明专利

  • 公开/公告日2015-03-25

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201410697303.3

  • 发明设计人 刘轶;王博弘;

    申请日2014-11-26

  • 分类号G06F11/36(20060101);

  • 代理机构11121 北京永创新实专利事务所;

  • 代理人李有浩

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-12-18 08:05:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-04

    未缴年费专利权终止 IPC(主分类):G06F11/36 专利号:ZL2014106973033 申请日:20141126 授权公告日:20170922

    专利权的终止

  • 2017-09-22

    授权

    授权

  • 2015-04-22

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

    实质审查的生效

  • 2015-03-25

    公开

    公开

说明书

技术领域

本发明涉及在多核架构中进行软件调试的方法。更具体的说,本发 明设计在多核架构中实现共享内存多线程程序的可重现调试的技术方 法。可重现调试为一种可以让并行程序在运行过程和调试过程中都能产 生相同结果的技术。

背景技术

近年来,为了使硅效率(即,“应用可实现的”MIP/mm2或MIP/mW) 最大化,出现了一种制造包含多个核的处理器的趋势。这种多核架构理 想地适于运行基于线程的应用,因为线程定义了包含执行状态、指令流 和数据组的自主工作包,该线程通过定义可以与其他线程并行执行。然 而,这种并行执行对在这些多核架构上使用的软件调试进程引入了另外 的问题。软件调试是对计算机应用的执行中的错误进行定位和改正的总 称。

针对于并行程序而进行的软件调试,一般会由于并行程序运行的不 确定性而产生困难。并行程序的不确定性是指,在相同不行程序的多次 运行中,产生的结果可能是不同的。这一现象可能导致在软件的先前运 行中,软件错误出现,但是在软件的调试运行中,软件错误消失。这种 结果的不确定性就会为软件的调试带来困难。近年来在学术界和工业界 提出了可重现调试的方法,以应对并行程序调试中出现的不确定性问题。 所谓可重现调试,就是让并行程序在运行过程和调试过程中都能产生相 同结果的技术。

造成并行程序执行不确定性的有多个方面,包括:不确定的指令、 不确定的函数、IO操作(输入/输出操作)、陷阱指令、线程调度以及对 共享内存不确定的访问等。为了实现程序执行的确定性,可重现调试需 要消除上述多个方面可能造成的不确定性。其中,在多核处理器环境下 执行多线程程序时,对共享内存不确定的访问顺序,是当前可重现调试 领域面对的关键问题。

目前针对可重现调试,学术界和工业界都已经给予了充分的关注, 并提出了多种解决方法。现有的解决方法主要可以分为三类:完全记录 方式、部分记录方式和确定性重现方式。完全记录方式的思路为:记录 所有共享内存上数据访问的冲突以及冲突之间的序列信息;部分记录方 式的思路为:在完全记录方式记得基础上进行优化,只记录影响最终结 果的部分关键访问序;确定性并行方法的核心思路为:在不记录任何共 享内存访问序的情况下,使并行程序确定性的执行。

以上三种针对可重现调试问题的解决思路,都存在共同的不足,主 要体现在一下的三个方面:第一,都需要较大的可重现代价。对于完全 记录方式和部分记录方式,现有的技术方案都需要记录大量的日志。对 于确定性并行方式,则会使并行程序的执行产生较大的性能损失,降低 程序的并行性;第二,方案的泛用性差。已有的解决方法有些属于硬件 方法,需要针对于特定的硬件结构。软件方面的方法也需要基于特定的 操作系统、虚拟机以及运行时环境等;第三,可扩展性差。这里的可扩 展性主要体现在对于线程数目的可扩展性。现有方案的实验数据大多基 于2-4线程的测试,只有极少数的方案进行了线程数为8的测试。并且 从实现结果中可以发现,现有方案的性能损失和日志大小会随着线程数 超线性增长。

综上,并行程序的可重现调试为一个具有广泛应用前景的研究方向。 但是现阶段针对可重现调试的已有研究成果都存在有比较严重的缺陷。 一个可以指出的事实是:目前商业化的可以支持可重现调试的软件或硬 件系统仍未出现。因此在现阶段,对可重现调试的实现思路进行更多的 思考和尝试是十分有意义的。

发明内容

本发明提出的基于运行快照序列的并行程序重现调试方法适用于多 核处理器平台中。所指的多核心处理器也可以成为多微处理器核心,是 在一个单一的计算组件中,加入两个或两个以上的独立实体中央处理单 元。这些核心可以分别独立运行程序指令。

本发明提出的是一种额外代价较小且具有实用性的实现并行程序可 重现调试的方法。在可重现调试领域,传统的实现方式都采用了让需要 被调试的程序进行实际重现的方式。即在并行程序执行的过程中记录一 些必要的序列信息(或者在执行的过程中保证没有不确定执行情况的出 现),从而保证在并行程序的原始执行和调试执行都将产生相同的结果。 在保证了结果的相同后,用户就可以使用传统的断点、单步执行等调试 方法进行进一步的调试。

本发明的提出的技术方案则是将并行程序的调试执行从一个物理上 的实际执行转化为了一个逻辑上的概念执行。技术方案为:在并行程序 运行前,由用户执行在程序运行中对调试会产生帮助的关键点;在并行 程序执行的过程中,针对用户指定的每一个关键点都保存一个快照,多 个快照形成快照序列。在并行程序执行结束后,进入重放阶段,向用户 展示快照信息以恢复出程序在设定关键点的运行场景。

所指的快照为目标并行程序在指定时刻的整体运行状态,包括处理 器中的寄存器使用情况(即处理器上下文)、内存中的堆及运行栈数据、 以及程序对于系统中各类资源的使用情况。在具体的使用过程中,用户 也可以根据自身需要对快照所涵盖的数据内容进行一定的缩减。

本领域的技术人员可以了解到,传统的程序调试流程一般包括:用 户在程序中设定断点;程序开始运行,在用户设定的断点处停止;用户 可以查看被调试程序在当前时刻的整体运行状态,包括处理器中的寄存 器使用情况(即处理器上下文)、内存中的堆及栈数据、以及程序对于系 统中各类资源的使用情况;用户在查看各个断点的状态数据后,可以对 程序的运行状态产生更深的了解,并使用观察到的信息指导程序错误的 修改。

与传统的调试流程对比可以发现,本发明所提出的基于运行快照序 列的并行程序重现调试方法,在并行程序运行结束后,提供给用户连续 的快照序列进行查看时,可以实现与传统调试类似的功能。但需要注意 的是本发明提出的方法中,所有的程序执行关键点(类似于传统调试中 的断点),必须在程序运行之前设置,在程序运行过程中和结束后均不能 更改。并且由于所有的快照信息是在并行程序运行的过程中实时记录的, 可以完全真实的反应并行程序的运行状况,从这一点上保证了调试错误 的可重现。综上,本发明所提出的方法是实现了并行程序的可重现调试 功能的。

本发明所提出的方法适用于解决多线程程序的可重现调试问题。为了 解决这一问题,本发明提出的整体技术方案流程如下:

步骤一:提供给用户快照保存触发程序库,用户在程序编写的过程 中,根据程序的具体业务逻辑,自行选择合适的位置在代码中调用快照 保存触发程序库所提供的接口。

在完成编译后,与快照保存触发的相关的机器指令将会迁入到目标 用户程序中的特定位置。

这里及下文中的目标用户程序指调试方法用户编写源代码并完成编 译后产生的在操作系统中可调度的进程(如目标进程、任意一进程P)。

步骤二:在目标用户程序运行的过程中,若快照保存触发相关的机 器指令被执行。则通过硬件提供的控制功能,使得所有执行目标用户程 序的处理器核都被暂停,并且转入执行快照保存执行模块的程序。

步骤三:预先对目标用户程序执行时所处的操作系统程序进行改动。 添加快照保存执行模块、快照信息维护模块以及额外的快照相关进程调 度策略。快照保存执行模块负责保存目标用户程序在当前时刻的快照信 息。快照信息维护模块负责提供快照保存状态的查询,以便所有的处理 器核可以了解到目标用户程序的快照保存过程是否结束。额外的快照相 关进程调度策略需要保证在目标用户程序的快照保存过程结束前,目标 用户程序不能在多核处理器的任意一个微处理器核心上执行。

步骤四:在转入快照保存执行模块的程序执行后,首先要判断当前 执行的处理器核所属的类型。如果当前程序执行所在的处理器核为快照 保存的触发核,则将其称为触发核,否则将当前程序执行所在的处理器 核称为响应核。对于在触发核中执行的快照保存执行模块,需要实际负 责目标用户程序快照信息的保存,并在保存完成后向操作系统中的快照 信息维护模块声明快照保存过程的结束。对于在响应核中执行的快照保 存执行模块,则要主动结束目标用户程序时间片的执行。

步骤五:在触发核声明快照保存结束后,所有的处理器核都可以继 续正常调度执行目标用户程序的任意一个线程。

步骤六:在目标用户程序整体执行结束后,将运行过程中产生的所 有快照信息写入到外部存储中。

步骤七:在需要对程序的运行过程进行调试时,使用快照数据重现 模块(6),读取外部存储中已经保存的快照信息,并将一个或多个快照 顺序的展示给用户,实现一种近似的可重现调试效果。

在上述的技术方案下,本发明的有益效果主要在于,整体上提出了 一种具有实用性的并行程序可重现调试方法,方法的具体优势体现在实 现简单、使用灵活和额外代价小这三点上。实现简单方面,现有的并行 程序可重现调试技术一般都对硬件以及操作系统具有较大的依赖。而本 发明提出的方法只需要在操作系统中添加三个较小的功能模块,相比之 下对系统和硬件具有更小的依赖,实现简单,具有更大的泛用性;使用 灵活方面,在本发明提供的技术方案框架中,用户可以根据需要设定快 照捕捉的关键点和快照的具体内容;额外代价小方法,已有的实现可重 现调试的方法,为了实现程序的实际复现,在多核多线程程序的应用场 景下都需要记录大量的内存访问顺序,而本发明提出的方法并不要求程 序的实际复现,只需关注用户指定的一些关键点,为实现可重现调试而 引入的代价较小。且具体的额外代价与线程数无关。

附图说明

图1是本发明基于运行快照序列的并行程序重现调试方法的流程图 与捕捉部分结构框图。

图2是本发明基于运行快照序列的并行程序重现调试方法的重现部 分结构框图。

图3是本发明快照捕捉触发核处理流程图。

图4是本发明快照捕捉响应核处理流程图。

图5是本发明辅助转存线程处理流程图。

图6是本发明额外进程调度策略处理流程图。

具体实施方式

下面结合附图,对本发明的具体实施方式进行进一步的说明。

图1和图2给出了本发明所提出的捕捉、重现的技术方案。在具体 的实施方式中,本发明的技术方案可以划分为快照保存触发模块4、快照 捕捉执行模块1、快照信息维护模块2、额外进程调度策略模块3、辅助 转存线程模块5和快照数据重现模块6。

下面将对上述各个模块的具体实现方式进行进一步详细的说明。

快照保存触发模块4

快照保存触发模块4所对应的机器指令会混合编译到用户编写的程 序中。提供多种逻辑供用户触发快照的保存。该快照保存触发模块4中 同样需要实现一种和处理器硬件进行交互的机制,用来控制快照保存时 多个处理器核的行为。

在快照保存触发模块4中,所提供给用户的是一个可以采用多种方 式调用的程序库。在一个典型的程序库中,用户可以采用如下的几种方 式完成快照的触发。

(A)直接触发方式:如程序库提供给用户一个可调用的函数 DoSnap(),用户在调用该函数后就可以触发快照的采集。

(B)条件触发方式:可以成为条件触发的触发方式有很多种,例如: 使用assert的语义,当某个变量不满足/满足某个条件时就触发快照的 捕捉;使用try/catch语义,结合异常触发的机制,当出现某种类型的 异常时就出发快照的捕捉。

(C)信号触发方式:当用户定义的并行程序在执行的过程中产生某 些特定的信号,如段错误信号(信号类型并不限定于必须停止程序执行 的致命信号)时,就触发快照的捕捉。上述的信号是针对Linux系统环 境进行说明的。本领域的技术人员可以了解到,Linux系统是一种目前使 用非常广泛的操作系统,在其他的常用商业操作系统中,如Window/Unix 中,也会支持类似的信号发送和捕获功能。

快照保存触发模块4在具体的实施过程中需要关注的另一点就是对 多个处理器核(如处理器核A、处理器核B、处理器核C、处理器核D等) 的控制。对于共享内存执行环境下的多线程程序,属于同一进程的多个 线程可能同时在多个处理器的物理核上执行。在这种情况下,如果处理 器核A触发快照捕捉后不对处理器核B和处理器核C进行控制而直接进 行快照保存。则最后保存的快照结果,有极大的可能出现各个线程的快 照信息不在同一时间点上的情况,在这种情况下,最终保存得到的快照 信息是和实际执行过程不符,甚至可能对用户的调试过程产生误导的。 因此,快照保存触发模块4需要对处理器的多个物理核进行控制,在保 存快照的过程中使多个处理器核同时暂停。

暂停一个处理器核上程序的运行。常用的方法分为软件和硬件两种。 软件的方法即利用操作系统对进程的调度来完成指定线程的停止执行。 但软件方法必须在用户程序需要执行特权执行并进入系统态时才会生 效,在这样的情况下,发出停止信号到目标线程实际停止,这期间可能 产生的延迟是不确定的。而硬件的方法则是使用处理器硬件提供的控制 功能,一般会在一个处理器执行时间周期内完成控制的生效。

目前在主流的商用处理器中都可以实现上述的硬件控制多个处理器 核暂停的功能。本发明的具体保护点并不涵盖于硬件暂停方法的具体实 现过程。但是在具体实施方式的说明中,可以给出特定硬件平台上的一 种具体实现方法:该方法适用于Intel IA-32/64处理器架构。本领域的 技术人员可以了解到,Intel IA-32/64处理器架构是目前应用最为广泛 的一款商用处理器架构。Intel IA-32/64处理器架构中,提供了IPIs技 术,即跨处理器中断。通过使用IPIs技术,用户可以实现软件上的中断 自我触发。在Intel IA-32/64架构多核处理器的每个处理器核中,都具 有local-APIC部件。用户在使用汇编指令向local-APIC中的RAC寄存 器写入数值后,即可以向其他所有的处理器核广播特定类型的中断。

则在Intel IA-32/64处理器架构中,快照保存触发模块4控制功能 的一个可能的具体实现流程为:

1.用户程序触发快照保存。

2.设触发快照保存的线程所运行于的处理器核为coreA。向coreA中 local-APIC部件中的RAC寄存器写入实现定义的中断类型。

3.事先将快照保存执行模块的程序作为特定中断的处理函数进行注册。 则所有的处理器核可以在一个指令周期内暂停并转入快照保存执行程 序。

快照捕捉执行模块1

快照捕捉执行模块1需要事先作为附加模块添加至操作系统中,负 责实际执行快照的保存过程。在保存过程中需要对处理器核的类型加以 区分,划分为触发核和响应核,并进行不同的处理。

在快照捕捉模块1的具体实施方案中,首先要对处理器核的类型进 行定义。设触发快照保存的线程所运行于的处理器核为触发核,其他的 所有处理器物理核为响应核。在实际的快照保存执行流程中,触发核为 实际执行保存的处理器核,响应核需要完成的则为部分同步操作。

快照捕捉触发核的具体处理流程如图3所示。以下将对图3中展示 的具体流程进行进一步的说明:

(A)在快照触发前,于触发核上执行的为需要保存进程的一个线程 (在本部分的说明中称之为目标进程和目标线程)。在目标线程执行的过 程中,用户的逻辑触发了快照的保存,使用上文已经提到的处理器控制 方法,让触发核的执行转入快照保存执行部分。

(B)在转入快照保存执行部分后,首先与快照信息维护模块进行交 互,声明目标进程的快照保存过程开始。

(C)执行实际的快照保存过程。从操作系统中读取必要信息,获取 与目标进程相关的内存资源和系统资源,转化成为完整的快照信息,并 将快照信息复制到内存中特定的目标区域。

(D)与快照信息维护模块进行教书,声明目标进程的快照保存过程 结束。

(E)触发核的快照保存执行过程结束。

快照捕捉响应核的具体处理流程如图4所示。以下将对图4中展示 的具体流程进行进一步的说明:

(A)快照捕捉响应核接收到硬件发出的暂停信号,转入快照保存执 行模块。

(B)检查当前正在执行的进程是否为发出快照捕捉请求的进程。如 果是,则主动结束当前进程时间片的处理,并向操作系统通知,随后操 作系统在调度的过程中会调度其他的进程至当前的响应核。如果否,则 返回至程序正常执行的状态。本领域的技术人员可以了解到,主动结束 时间片的处理有多种方式,包括执行任意特权指令时响应核进入系统态 等。操作系统进程调度中的额外策略体现在额外快照线程调度策略模块 中。如果不是,则响应核将恢复程序的正常执行,不受快照保存行为的 影响。

在触发核执行快照实际保存的过程中,还可以根据用户的需要对快 照的内容进行个性化的定制。在最完整的情况下,快照信息将包括目标 进程所使用的全部内存资源(运行栈、堆的数据)、处理器上下文以及其 他各类对调试有帮助的系统资源。在实际实现的过程中,考虑到进行调 试的目标程序占用的内存空间可能较大,且大部分的内存中存储的数据 对用户设计的调试过程并没有实际的帮助,这时候用户就可以自行定义 实际的快照内容,对完成的快照数据进行裁剪。例如,只保存运行栈中 的数据,或者只保存关键的变量数据等。

在本发明中提出的捕捉过程中,快照保存触发模块4会多次满足触 发条件,即第一次快照保存触发、第二次快照保存触发、……、第N次 快照保存触发;使得快照捕捉执行模块1被多次执行,即第一次转入快 照保存执行过程、第二次转入快照保存执行过程、……、第N次转入快 照保存执行过程;最终生成多个用户程序快照,即第一次用户程序快照、 第二次用户程序快照、……、第N次用户程序快照。

快照信息维护模块2

快照信息维护模块2需要事先作为附加模块添加至操作系统中,负 责维护一个或多个正在执行快照保存的进程的信息。快照捕捉执行模块 1、额外进程调度策略模块3都需要与快照信息维护模块2进行交互。

快照信息维护模块2为需要向操作系统中添加的一个独立模块。该 模块在内部为每个需要保存快照的用户进程维护一个结构体,每个结构 体包含两种状态:快照保存状态和空闲状态。每个结构体还要对应一个 唯一的进程标示符,快照信息维护模块2可以通过进程标示符检索到任 意一个处于运行中的需要保存快照的进程对应的结构体。在后续的说明 中将上面定义的结构体成为信息管理结构体。

快照信息维护模块2向外提供四个调用接口:进程运行开始、进程 运行结束、快照保存开始以及快照保存结束。

进程运行开始接口由操作系统在创建一个需要保存快照的用户进程 时调用。调用后快照信息维护模块2会针对新新创建的用户进程创建信 息管理结构体。并且结构体处于空闲状态。于此对应的,进程运行结束 接口有操作系统的一个需要保存快照的用户进程结束时调用。调用后将 会删除与该进程对应的信息管理结构体。

快照保存开始以及快照保存结束则由快照捕捉执行模块1中定义的 触发核调用。当触发核转入快照捕捉执行模块1的执行时,会首先调用 快照保存开始接口,随后快照信息维护模块2便会将对应信息管理结构 体的状态改变为快照保存状态。当触发核完成了快照的保存后,会调用 快照保存结束接口,随后快照信息维护模块2变回将对应信息管理结构 体的状态改变为快照保存状态。

额外进程调度策略模块3

额外进程调度策略模块3需要实现作为附加模块添加至操作系统中。 在操作系统实际运行的过程中,与已有的线程调度策略相结合,实现与 已有机制存在一定不同的新型线程调度策略。

本发明中的额外进程调度策略模块3,需要作为一个附加部分添加到 操作系统的整体线程调度策略中。本领域的技术人员可以了解到,目前 主流使用的操作系统,如Windows/Linux/Unix,其内部具有较为独立的 线程调度策略模块。在操作系统已有的调度策略的基础上,如图6所示 额外进程调度策略模块3的运行流程如下:

(A)运行操作系统中原始的线程调度策略,得到调度结果。针对处 理器核D的一次调度可以被表示为:将进程P调度到处理器核D执行。

(B)从快照信息维护模块2中获取任意进程P对应的快照保存状态。 如果进程P是处于快照保存状态,则需要拒绝此次进程调度;如果否, 则接受此次调度。

(C)拒绝进程调度后会再次调用操作系统中原始的线程调度策略, 直至线程调度策略产生的结果为可接受为止。

辅助转存线程模块5

辅助转存线程模块5需要实现作为附加模块添加至操作系统中,负 责将一个或多个正在执行快照保存的进程所保存的快照,在适当的时机 转存如外部存储中。

本发明所提出的运行快照记录方法,在程序占用内存空间较大,或 者程序运行时间较长时,可能产生的快照数据量是比较大的。如果将所 有的快照数据都保存在内存会导致存储资源的耗尽。因此,需要在程序 运行的过程中,定时将部分的快照数据转存如外部存储中。

一个可以考虑的方案为让触发核在执行实际的快照保存时,每添加 一个快照后,就检查当前存储的快照容量是否超出限制,如果超出限制 则将部分快照信息转存到外部存储中。但是采用此种方案时,快照保存 操作的运行时间可能较长,这会对需要保存快照的进程的运行产生较大 的影响。

为了解决这一问题,在实际的实现方案中引入了辅助转存线程模块 5。所述的辅助转存线程模块5与快照捕捉执行模块1和快照信息维护模 块2相互配合运行。当有一个新的需要保存快照的进程开始运行时,快 照信息维护模块2便会为其在内存中分配一定的快照保存空间,快照捕 捉执行模块1会将该进程产生的用户程序快照写入到该内存区域中。而 辅助转存线程模块5则会同时关注所有正在运行的需要保存快照的进程 对应的内存区域。其具体的运行流程如图5所示:

(A)在操作系统开始运行后,辅助转存线程模块5就作为一个独立 的模块伴随操作系统开始运行。在实际运行的过程中,辅助转存线程模 块5始终执行以下的循环。

(B)辅助转存线程模块5遍历所有已经启动的进程列表。

(C)针对每一个进程,首先检查该进程是否执行结束。如果是已经 执行结束,则需要将该进程在内存中存储的所有快照信息都写入到外部 存储中。如果否,则继续执行下一步的检查。

(D)检查当前进程在内存中存储的快照信息是否超过了容量限制, 如果是超过则将部分快照信息写入到外部存储中,如果否,则不进行任 何的快照转存操作。这里的容量限制可以根据系统各种性能指标灵活的 制定。

(E)针对当前进程的检查和转存操作结束。跳至(B),继续循环。

快照数据重现模块6

快照数据重现模块6在并行程序执行完成后运行,从外部存储中读 取已经保存的快照信息,并结合具有一般功能的调试工具将快照信息连 续的展示给用户,从而提供完整的调试功能。

快照数据重现模块6的实现方案可以整体分为两个部分,第一是单 一快照中的信息完整的展示给用户,第二是实现多个快照(即重现第一 次用户程序快照、重现第二次用户程序快照、……、重现第N次用户程 序快照)之间的连续播放、跳转等功能。

针对第一部分,如果保存的快照为完整版本,即包含了程序占有的 全部内存资源(堆、运行栈),则可以结合已有的调试工具进行展示。GDB 为一个目前应用最为广泛的调试工具,在GDB结合Linux系统可以实现 core dump的功能,即当用户程序崩溃时会自动捕捉用户程序锁占有的全 部内存资源,形成一个core dump文件。GDB可以加载core dump文件, 加载后用户可以自由的查看程序中运行栈和堆中任意地址上的数据。

快照信息的展示便可以和GDB已有的core dump功能相结合。具体 实施方法为:采用伪装的方法,将一个保存得到的快照信息伪装成一个 完整的core dump文件,从而可以加载到GDB中进行查看。使用这种方 法,一方面可以充分的利用已有调试工具的功能,另一方面也可以使新 型的调试方法作为已有通用调试工具的一个新功能进行发布,从而增加 发明的易用性和可扩展性。

针对上述的第二部分,本领域的技术人员可以了解到,其整体实现 方法较为清晰和简单。

本发明是一种基于运行快照序列的并行程序调试方法,所要解决的 是并行程序,尤其共享内存的多线程程序的可重现调试的技术问题。该 方法在并行程序运行过程中,于用户指定的关键点完成快照的保存;在 并行程序运行结束后,向用户展示快照信息以恢复出程序在设定关键点 的运行场景。该方法利用快照保存和重现的技术手段,将并行程序的调 试执行由物理执行转化为了逻辑执行,从而克服了并行程序可重现所面 临的效率问题,具有实现简单、使用灵活和额外代价小这三个主要优势 和技术效果。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号