CN104520819B - 使用轻量进程快照的历史软件诊断 - Google Patents

使用轻量进程快照的历史软件诊断 Download PDF

Info

Publication number
CN104520819B
CN104520819B CN201380041353.XA CN201380041353A CN104520819B CN 104520819 B CN104520819 B CN 104520819B CN 201380041353 A CN201380041353 A CN 201380041353A CN 104520819 B CN104520819 B CN 104520819B
Authority
CN
China
Prior art keywords
snapshot
carrying
memory
data
diagnostic tool
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
CN201380041353.XA
Other languages
English (en)
Other versions
CN104520819A (zh
Inventor
J·戴维斯
T·H·金
C·A·汤姆森
S·卡罗尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN104520819A publication Critical patent/CN104520819A/zh
Application granted granted Critical
Publication of CN104520819B publication Critical patent/CN104520819B/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/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • 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/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

调试和诊断系统允许用户取得正在运行的被调试进程的轻量进程快照,因此用户可以在稍后时间分析这些快照。快照机制允许诊断工具将原始进程和一个或多个进程快照进行比较,或将一系列进程快照中的任意快照相互比较。所述快照机制还允许用户检查进程存储器的快照,同时允许原始进程以最小影响方式继续运行。用户可使用随着时间取得的被调试进程的进程快照来进行历史调试。这允许用户查看被调试进程的状态,就好象其在快照被摄取时所存在的那样。轻量进程快照是较不侵略性的,因为它不要求存储器的完整副本并且允许原始进程在完成特定收集和检查的同时不被中断地运行。

Description

使用轻量进程快照的历史软件诊断
背景
传统的软件诊断工具(诸如调试器、剖析器以及存储器诊断工具)通常对实况的、正在运行的进程或保存的、重量进程状态(诸如进程转储文件或历史轨迹)进行操作。实况的进程提供关于进程如何达到其当前状态的很少的历史上下文或不提供关于进程如何达到其当前状态的历史上下文。在冗长的同时,创建和分析进程转储文件是极其重量且耗时的。
对于软件开发者而言,在诊断进程期间分析历史数据是普遍的。例如,在调试时,开发者可能想要检查进程,像其存在于先前状态中而非当前状态中的那样。对于存储器诊断,开发者经常想要查看随着时间在进程的存储器中的改变。
在生产场景和开发场景两者中,不侵略性且不破坏性地收集诊断数据是重要的。在生产中,诊断工具应当对生产进程和系统具有很少影响或不具有影响。使用现有的方案来对进程状态数据进行收集可能以不期望的方式影响进程和系统。
发明内容
提供本概述是为了以简化的形式介绍将在以下具体实施方式中进一步描述的概念选择。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
调试和诊断系统允许用户取得实况的被调试进程的轻量进程快照,因此用户可以在稍后时间分析这些快照。可以在生产场景中使用调试和存储器诊断系统,因为它在将对生产系统的破坏最小化的同时依然允许用户捕捉进程状态的快照。轻量进程快照允许对进程的调用栈、变量值、存储器、模块列表、线程列表等等的检查,同时允许原始进程继续执行。
快照机制允许诊断工具将原始进程和一个或多个进程快照进行比较,或将一系列进程快照中的任意快照相互比较。所述快照机制还允许用户检查进程存储器的快照,同时允许原始进程以最小影响方式继续运行。
在此所用的术语轻量进程快照或“快照”意指可以在不需要创建进程的执行或存储器的完整轨迹的情况下被有效创建的进程的副本。在典型的实施例中,操作系统在虚拟存储器模型的顶部实现快照机制,并且使用共享存储器页和写时复制技术来避免对创建进程的完整副本的需求。写时复制允许操作系统将原始进程的整个地址空间的实际页快速映射到第二进程快照中。
如果原始进程在快照后执行,则由原始进程作出的任意存储器写将导致该存储器页的副本被创建。然而,只有被进程执行实际修改的页将具有创建的副本。未被修改的页在原始进程和任意进程快照之间共享。
存储器诊断系统允许通过执行进程快照中的收集代码对进程存储器信息进行收集,同时允许原始进程继续分开地运行。存储器诊断系统可用对于目标进程而言最小的破坏和存储器开销来以进程外方式收集目标进程存储器信息。用户可摄取实况的被调试进程的存储器的两个或更多个快照并比较这些快照来寻找随着时间的存储器使用方面的改变。
如果随着时间被摄取的多个进程快照的共享存储器的大部分保持未被改变,则相比于使用存储器转储,该多个进程快照可以较轻的方式被一起使用。使用随着时间的多个快照,快照数据可与基线进行比较或在快照之间进行比较。附加的历史快照可被部分读取来分析随时间的趋势。
存储器诊断系统可在收集时应用数据抽象,其允许多个收集被交叉参考。系统可基于历史收集数据来动态且自动地调整快照收集速率,其将在使用进程快照时最小化资源使用。
通过使用进程快照,来自进程内收集的存储器开销可通过将该收集移动到快照进程来被减少。例如,在进程内组件的情况下,存储器被针对其收集信息的进程所消耗。该信息可被存储在目标进程的快照中。这将不会影响目标进程的性能或由于对诊断信息的收集而潜在地导致其达到存储器用尽条件。因此,这种技术极大地减少了破坏原始进程的机会。
附图说明
为了进一步阐明本发明的各实施例的以上和其他优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描述和解释,附图中:
图1示出用轻量进程快照的历史调试。
图2示出根据一个实施例的轻量进程快照。
图3是示出用于进程内收集场景的方法的流程图。
图4是根据一个实施例示出用于用户驱动的诊断收集的方法的流程图。
图5示出了通过针对轻量进程快照进行检查,同时允许真实的被调试进程继续运行的较不侵略性调试。
图6示出了按需存储器数据收集和检查实施例。
图7解说了其上可以实现轻量进程快照实施例的适当的计算和联网环境的示例。
具体实施方式
轻量进程快照可与目标进程在其上运行的操作系统合作来被创建。相比于要求诊断工具亲自创建快照,这允许快照被快得多地并使用较少的系统资源来被创建。在一个实施例中,操作系统的存储器映射机制和写时复制(copy-on-write)被用于在目标进程的地址空间中映射到新的快照进程。进程快照可以是使用页表复制和写时复制操作的对正在执行的进程的克隆。进程快照可通过其它方式被创建,诸如通过在目标进程上反射或复制目标进程的存储器地址。
如果原始进程被允许运行,则新的存储器页副本在进程向每页进行写时被创建。这可对原始进程的性能具有一些最小影响,但是它必须仅在当某页被实际写入时创建实际页。
在一些实施例中,进程状态可被诊断工具复制。例如,进程快照机制可能不对模块列表或线程列表进行快照,但是诊断工具可快速地创建模块列表或线程列表的快照并不以复制进程堆或栈所需要的方式来消耗资源。
轻量进程快照模型在调试会话期间启用历史调试的模式。随着时间的被调试进程的快照允许用户查看被调试进程的状态,就好像其在快照被摄取时所存在的那样。用户可控制何时快照被摄取或调试器可在某个预定的触发或事件后自动地摄取快照。系统的物理和逻辑资源是对一次可为进程创建的快照的数量的唯一限制。这使得调试会话一次具有存在于系统中的多个快照成为可能。
在一个实施例中,当开发者希望检查处于存在于特定时间处的状态中的进程时,开发者从可用快照列表中选择对应于那个时间的快照。一旦快照被选择,其可被用作调试器的数据源以供检查。在这个模式中,使用快照数据-而非实况的进程-来生成所有调试器视图,包括但不限于调用栈、变量值、存储器、模块列表和线程列表。这使得开发者能够查看在所选时间处的进程的状态。
使用这个模型,一些状态可能是不可被检查的。例如,可能不能为内核或其它实体(诸如文件或管道)中的状态生成快照。然而,通过与操作系统的充分合作,有可能将这个机制扩展到不仅仅是对进程状态进行快照并包括这些外部实体的副本。
实况的进程调试器通常使用存储器读取原语和线程上下文原语来用于数据检查。当调试器需要获得特定数据片段的值时,调试器查询符号信息来确定它驻留在被调试进程存储器中的何处。这可例如要求读取线程寄存器状态。调试器接着使用函数(诸如ReadProcessMemory(读取进程存储器)和GetThreadContext(获得线程上下文)函数)来从进程中读取想要的数据。当调试器切换到作为数据源的进程快照时,读取是简单地从快照进程读取。
图1示出用轻量进程快照的历史调试。调试器进程101被用于调试被调试进程102。调试器进程101具有允许用户分析被调试进程的组件的用户界面。例如,用户界面可以提供示出调用栈103、模块104、线程105和变量检查106的窗口。被调试进程102包括,例如,线程107、模块108和虚拟存储器页表109。虚拟存储器109指向由操作系统的虚拟存储器管理器110所管理的物理存储器页111。
在调试会话期间,创建轻量进程快照112和113。这些是在特定时间摄取的被调试进程102的快照。可以由用户手动发起快照112、113,或者调试器101可以在当观察到特定事件或触发时或以某些间隔自动生成快照112、113。
快照112包括线程表114和模块表115,它们是在快照112被创建的时刻(T1)时调试器101的内部表的副本。虚拟存储器页表116指向在快照112被创建的时刻T1时所使用的物理存储器页110。最初,虚拟存储器109和虚拟存储器116将是等同的;然而,随着被调试进程继续运行,虚拟存储器109将改变,因为它的页表指向了经更新的存储器位置110。
类似地,在另一时刻(T2),响应于用户选择或由调试器进程101所观察到的事件或触发的出现,创建进程快照113。快照113包括在当该快照和当时的虚拟存储器页表119的副本一起被创建的时刻T2时的线程表117和模块表118的副本。
快照112、113允许调试器进程101或用户回看在快照112、113被创建的时刻(T1,T2)被调试进程102看起来像什么,尽管被调试进程102在此期间已经被改变。并且,调试器进程可以比较被调试进程102和/或进程快照112、113之间的状态以生成在不同的时间的不同进程状态之间的差异,这样用户可以查看进程的哪个部分已经被改变以及如何被改变。
在其它实施例中,可以创建快照112并且允许在没有干扰的情况下运行原始的被调试进程102。随后可以对进程快照112运行测试以观察该进程如何被影响。如果进程快照112失败或具有归咎于测试的其它问题,那么这些问题将不会影响真实的正在运行的进程102。
图2示出根据一个实施例的轻量进程快照。原始进程201包括指向存储在物理存储器203中的数据的页表202。例如,进程201可以在页表条目204中存储变量X,其指向实际存储了变量X的值的物理存储器位置205。
当从原始进程201创建进程快照206时,原始页表202被复制作为快照页表207。快照页表207的内容与原始页表202的内容相同,因为它是在快照被创建时存在的。例如,在进程快照206中,变量X指向快照页表207中的条目208,其像原始页表202一样指向存储了变量X的值的物理存储器位置205。
在快照被创建之后,原始进程201可以继续运行。原始进程可以生成变量X的新值,该新值再次被存储在原始页表202的条目204中。然而,变量X的新值是被存储在物理存储器203的新位置209中。因此,原始页表202被更新以指向物理存储器位置209,但快照页表207维持其快照状态并指向变量X的原始值仍然驻留在其中的存储器位置205。
快照机制允许较少破坏性的调试检查。通常当在中断模式中调试进程时,被调试进程被操作系统停止。这意味着在被调试进程内的代码不执行。这对于检查被调试状态来说是理想的,因为该状态在所述进程被停止时不能改变。然而,在一些情形中,停止所述进程会导致死锁或其它系统不稳定性。例如,当被调试进程在其它进程中被共享时,其它进程可能会尝试与处于中断模式中的共享的被调试进程进行通信。在最佳情形下这会导致在其它进程中的延迟,而在最坏情况下这将导致死锁、进程破坏和不稳定性。轻量快照模型通过允许调试器检查共享的进程的轻量进程快照而不是真实进程,能够在这样的情形中进行调试。真实进程被允许在该检查期间继续执行。
例如,在Windows 8中的Windows Runtime(运行时)(WinRT)模型中,每个应用由至少两个进程构成:其中用户代码被执行的一个进程以及其中安全敏感对象存在的另一代理(broker)进程。被代理的对象是系统的一部分,而不是用户代码。因此,检查是调试的仅被要求的方面。在给定这些对象逻辑地是调试器的部分、但存在于分开的代理进程中的情况下,开发者可能想要检查这些对象。然而,代理进程在多个应用间被共享,并且停止代理进程可死锁所有其它应用。因此,使用轻量进程快照来在特定时间创建代理进程的副本将允许开发者对该进程进行检查,同时依然允许代理处理来自其它进程的调用。
轻量进程快照还提供最小破坏性的存储器数据收集。在生产场景中,存储器诊断工具通常是基于存储器转储或快照的,这是较佳的,因为这不会破坏目标进程。然而,基于非转储的存储器工具(诸如存储器剖析器)常常执行目标进程中的代码。这对目标进程的健康和性能都增加了非常大的风险。此外,在收集例程执行时,这对于目标进程是破坏性的。基于存储器转储的诊断是资源密集的并且常常不提供从剖析器中可用的详细数据。
轻量进程快照方式提供了用于收集存储器数据的非破坏性方法并且包括在存储器剖析器中找到的多个益处。目标进程的快照被摄取并且该快照被用于类似于以上提到的调试检查的检查。此外,收集例程可在进程快照中被执行,同时允许原始进程继续。
在生产场景中,诊断工具应具有对目标进程在各方面(诸如性能、存储器利用以及功能破坏的风险)的最小影响。在开发场景中,尽管对于最小化这些方面中的开销依然是重要的,但是焦点在于确保诊断数据的质量。进程快照方式在创建快照时提供最小目标进程破坏。在快照被创建后生成的附加开销仅应用于快照,而非原始进程。诊断工具可接着对快照来运行破坏性收集和分析,从而以更有效的方式提供更丰富的数据。如果这些诊断例程引起快照进程中的显著性能降级,引起进程快照碰到其存储器限度或甚至终止快照进程,则原始进程将依然继续运行。因为只有进程快照被影响,这极大地降低了对目标进程的数据收集的风险状况。
图3是示出用于进程内收集场景的方法的流程图。在步骤301,摄取目标进程的轻量进程快照。在步骤302,诊断工具被附加到进程快照。与此同时,原始进程继续运行,而不中断。在步骤303,针对快照进程来运行收集例程。收集例程可包括例如强制垃圾收集。堆表也被检索。在步骤304,所收集的数据被保存到存储,在此它将可用于之后的分析和审阅。附加地或替换地,在步骤305,所收集的数据被进程间通信(IPC)传输到另一进程。在这个场景中,收集例程不在原始进程上运行。这允许诊断工具最小化破坏原始进程的任何风险。
轻量进程快照方式还支持对数据的按需收集和检查。现有的存储器诊断方式要求在存储器转储时收集整个进程的转储或轨迹。这可能是资源密集的且提供了冗余信息。存储器剖析器和工具被用于收集所有需要的数据并接着在收集时保存该数据。一般而言,这发生在进程内。
轻量进程快照方式具有在工具或用户要求它时按需收集、保存和读取进程中的部分数据的能力。这具有更加资源高效的益处并且允许更丰富的用户驱动的诊断场景。
图4是根据一个实施例示出用于用户驱动的诊断收集的方法的流程图。在步骤401,用户摄取目标进程的存储器的快照。在步骤402,用户将诊断工具附加到进程快照。原始进程继续运行,而不中断。在步骤403,用户发起收集例程和/或用户发起进程状态检查,诸如堆对象检查。在步骤404,用户分析数据并标识附加的需要的数据和/或更特定的数据。在步骤405,用户接着发起附加的收集例程和/或用户发起进程状态检查。
可以理解,图3中所示的过程的步骤301-305和图4中所示的过程的步骤401-405可被同时和/或顺序执行。还可以理解,每个步骤可以按任何顺序执行,且可被执行一次或重复执行。
轻量进程快照模型支持进程内和进程外收集和检查两者。进程内收集例程显著地增加破坏目标进程的风险。因此,如果收集例程运行在非关键进程快照中,而非运行在原始目标进程中,那么对于原始进程的风险被减轻。传统地,进程外收集和检查也最小化进程破坏。但是,进程外收集具有在收集期间阻止目标进程的缺点。通过使用进程快照,原始进程可继续运行,而进程外收集在快照进程上运行。
轻量进程快照模型允许用户分析历史存储器使用。现有的基于存储器转储或状态快照的诊断方式受到时间点的快照的限制,并要求用户手动地在多个快照之间对数据进行相关。通过使用在此描述的基于轻量进程快照的方式,可在收集时执行对数据的附加抽象。这允许在分析时更丰富的诊断交叉参考和相关。
进程内存储器剖析器具有以下优点:它在收集例程执行的同时针对实际进程存储器进行收集。然而,在轻量进程快照方式中,快照存储器被映射。因此,尤其在随着时间比较多个快照时,快照中的存储器信息可能已经被改变并因此在比较快照时变得不相关。
例如,对象指针可在快照之间改变。用于解决这个问题的特定存储器诊断抽象可以用允许其被随着多个快照被跟踪的标识符来唯一地标记每个对象。其中这可发生的场景是分析垃圾收集器(GC)堆,其中针对目标进程可在收集的GC堆上摄取两个或更多个快照。在收集时所应用来唯一地标识每个堆对象的抽象可允许随着时间的多个堆快照的比较。相比于现有的基于转储的方式,这提供了改进很大的诊断信息,因为它允许诊断工具自动地将收集之间的数据相关并提供数据的区别或比较视图以显示快照之间改变了什么。这些区别可以在基线快照和一个或多个以下快照之间:多个基线、多个之后的快照或多个快照上的数据。
轻量进程快照可被用于堆比较,如在以下示例中描述的。对目标进程摄取进程快照(进程快照#1)。进程快照#1提供目标进程的基线。诊断工具附加到进程快照#1,并且原始进程继续运行。诊断工具强制进行垃圾收集并接着走查堆以确保在一致状态中堆被合适地分配,而没有破坏。诊断工具执行堆对象的抽象以跟踪它们。
当在目标进程中的某个动作改变该堆,摄取目标进程的另一进程快照(进程快照#2)。诊断工具附加到进程快照#2,并且原始进程继续运行。诊断工具强制进行垃圾收集。这使得存在于进程快照#1中的对象移动,并且因此使得它的对象指针改变。诊断工具接着走查该堆。
诊断工具接着执行堆对象的抽象以跟踪它们。两个快照堆之间的区别可被执行,包括被移动的以及具有快照之间不同对象指针的对象的比较。
只要目标进程中的某个动作改变堆,这些步骤就可被重复。多个快照可与原始基线进行比较,或者任何之后的快照可与任何之前的快照进行比较。
接下来描述分析多个快照上的数据的示例。摄取目标进程的进程快照。诊断工具附加到快照进程,并且原始进程继续运行。从快照进程中收集感兴趣的数据。摄取目标进程的附加的快照并且数据被收集。来自不同快照的历史数据被分析并随着时间被呈现以标识趋势。
在诊断工具从快照进程中收集数据时,对原始进程的破坏被最小化。这允许随着时间摄取大量的快照来收集特定且被抽象的数据(与收集整个存储器转储相反),并且允许趋势被容易地确定。创建附加的诊断抽象的轻量进程快照相比于传统的基于转储的存储器诊断工具而言提供了更加丰富的比较。在调试和存储器诊断场景两者中均使用进程快照显著地降低了对原始进程的可能的风险。另外,使用与写时复制虚拟存储器耦合的按需检查,进程快照最小化整个系统的资源要求。
另外,由于进程快照仅在写时复制存储器,在较短的时间上可摄取比完全存储器转储多得多的进程快照。这使得能够实现可基于被间隔地收集的历史收集数据来动态地且自动地调整收集速率的场景。当使用历史分析检测到潜在的问题时,工具可自动地调整在将来的快照中所收集的数据的类型。
以下算法可结合轻量进程快照来使用。
历史调试
支持使用轻量进程快照的历史调试的调试器提供通过其快照被创建的手动和/或自动方式。例如,调试器可展示用户动作来创建新的快照,或者当感兴趣的事件发生时(诸如当达到断点或步骤完成时),快照可被自动地生成。
为了创建快照,调试器暂时地挂起实况的进程以确保稳定性。调试器接着记录任何没有被转移到快照中的状态,诸如线程和模块列表。最终,调试器要求操作系统创建快照。操作系统克隆进程,存储器将虚拟存储器映射到快照中,并且启用写时复制。调试器接着恢复原始进程。
在之后的时刻,当用户决定查看历史数据时,他或她使用调试器提供的用户界面来作出当前调试器上下文的快照。调试器接着将当前轻量进程快照用作其针对所有调试器数据视图的数据源。例如,当求变量的值时,从快照中、而非从实况的进程中读取存储器。先前存储的进程快照也可被用户查看或访问。也有可能用户可选择切换到在不同时间摄取的不同历史快照。当用户完成检查历史状态时,调试器将其数据源切换回实况的进程。
对于用户可用的轻量进程快照的数目仅受到系统资源和操作系统限制的限制。然而,支持这种模型的调试器通常将提供用户界面以允许用户丢弃一些不再需要的快照。
较少破坏性的调试检查
较少破坏性的调试器检查模型可在以下场景中使用:调试器想要检查进程的状态,同时允许该进程继续执行。这个能力对于以下场景而言是重要的:被调试进程可被多个客户端共享,并且挂起进程以供检查将阻止所有其它客户端。
为了创建快照,调试器暂时地挂起实况的被调试进程以确保稳定性,记录任何没有被转移到快照中的状态(诸如线程和模块列表),并接着要求操作系统创建快照。操作系统接着克隆进程,存储器将虚拟存储器映射到快照中,并且启用写时复制。调试器接着恢复原始进程以允许其处理来自其它客户端的请求。
调试器将当前轻量进程快照用作其针对所有调试器数据视图的数据源。例如,当求变量的值时,从快照中、而非从实况的进程中读取存储器。当主被调试进程通过离开中断状态被允许执行时,快照被丢弃并且针对其的检查不被允许。当主被调试进程一旦再次进入中断模式,共享进程的新的当前快照被创建并且如以上描述的针对其进行检查。
图5示出了通过针对轻量进程快照进行检查,同时允许真实的被调试进程继续运行的较不侵略性调试。调试器进程501被用于调试被调试进程502。调试器进程501具有允许用户分析被调试进程的组件的用户界面。例如,用户界面可以提供示出调用栈503、模块504、线程505和变量检查506的窗口。被调试进程502包括,例如,线程507、模块508和虚拟存储器页表509。虚拟存储器509指向由操作系统的虚拟存储器管理器510所管理的物理存储器页511。
替代于附加到被调试进程502,轻量进程快照512被创建。快照512包括线程表514和模块表515,它们是当快照512被创建时在被调试进程502上的线程和模块列表的副本。虚拟存储器页表516指向当快照512被创建时使用的物理存储器页510。最初,虚拟存储器509和虚拟存储器516将是等同的。
调试器进程501检查快照512,同时允许被调试进程502运行,而不中断。随后可以对进程快照512运行测试以观察该进程如何被影响。如果进程快照512失败或具有归咎于测试的其它问题,那么这些问题将不会影响真实的正在运行的进程502。
按需存储器数据收集和检查
整个存储器转储可能是非常大的。跨多个快照的按需数据收集可显著地减少数据收集和检查的资源要求。
诊断工具首先附加或启用/激活在目标进程上进行收集所需要的任意组件。这可例如包括垃圾收集。操作系统克隆原始进程,存储器将虚拟存储器映射到快照中,并且启用写时复制。这些步骤可被重复多次,在此期间目标进程可继续运行,并允许交互。
诊断工具可在快照被创建后对它们运行任意次数的按需收集。例如,用户可能查询两个快照以寻找对象的实例,同时目标进程继续运行。如果诊断工具确定对象的特定实例是感兴趣的,那么对象的成员深入挖掘是需要的。针对快照收集来自该特定实例的附加的按需存储器读取并检查该读取。
这个过程可被重复任意次数,同时依然允许原始目标进程不被中断地运行,同时有针对性的、特定收集和检查完成。
图6示出了按需存储器数据收集和检查实施例。这个实施例展示了对数据的按需部分检查,同时目标进程继续运行。诊断工具在检查期间可继续与目标进程交互。
诊断工具601被附加到目标进程602。触发事件603被观察到,则诊断工具601指示(604)操作系统(O/S)快照支持605摄取目标进程602的快照。触发事件可以是例如用户请求、预定的时间、预定的间隔、达到断点或异常、完成步骤、观察到目标进程的感兴趣的状态等。操作系统快照支持605生成(606)第一轻量进程快照607。操作系统快照支持605将快照数据(608)返回到诊断工具601。
诊断工具601继续与目标进程602进行交互(609)。当另一触发事件610发生时,诊断工具601指示(611)操作系统快照支持605摄取目标进程602的另一快照。操作系统快照支持605生成(612)第二轻量进程快照613。
诊断工具601继续与目标进程602进行交互(614)。在之后的时间,用户指示(615)诊断工具生成两个快照之间的区别。诊断工具601在进程快照607上作出数据读取(616)并接收所请求的数据(617)。接着,诊断工具601在进程快照613上作出数据读取(618)并接收所请求的数据(619)。诊断工具601作出对从进程快照中接收到的数据的比较并将数据比较或区别(620)提供给用户。
用户还可指示诊断工具601深入挖掘(621)快照进程之一。诊断工具601在进程快照613中感兴趣的数据上作出部分数据读取(622)并接收所请求的数据(623)。来自深入挖掘的详细数据(624)随后被呈现给用户。
进程内和进程外收集
使用进程内收集有若干个缺点,包括向进程增加附加的可靠性风险和消耗进程资源,诸如虚拟存储器或CPU时间。进程快照允许诊断工具将这些缺点中的一些转移到快照。操作系统克隆进程,存储器将虚拟存储器映射到快照中,并且启用写时复制。这可在挂起进程后重复多次以允许若干个“相同的”快照被创建。诊断工具接着注入或激活进程快照中的收集组件,同时原始进程继续运行。
可对在相同时间摄取的多个快照使用不同的收集片段,以允许否则针对单个进程不可能的收集场景。进程快照可能从收集进程所利用的附加资源中遭遇问题或甚至死亡。在这种情况下,如果进程快照依然在操作,则可杀掉该进程快照,并且创建另一快照。新的快照可使用较少的密集资源要求,诸如更有针对性的部分读取。数据可通过使用较慢的方法(诸如写到持久或网络存储)被传输到进程外,而不影响原始进程。
动态和自动收集
诊断工具可被设为用初始收集间隔的参数来监视感兴趣的进程、感兴趣的度量等。操作系统克隆进程,存储器将虚拟存储器映射到快照中并且启用写时复制。诊断工具利用按需检查来自动地分析多个进程快照,以确定是否存在问题。当进程快照的数量达到预定限制时,最老的快照被杀掉。这些步骤可按预定间隔被重复,诸如每十分钟。
当检测到问题时,工具动态地调整收集到的数据。例如,如果工具检测到未被关闭的对象的实例,则工具将收集间隔调整到较短的时间并使用按需收集来收集关于对象的实例和关系的详细数据。
数据和基本分析可被转移出系统以减低对系统的破坏。数据和基本分析可被用于确定问题的根源。
图7解说了在其上可以实现图1-6的示例的适当的计算和联网环境700的示例。计算系统环境700只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任何限制。本发明可用各种其他通用或专用计算系统环境或配置来操作。适用于本发明的公知计算系统、环境、和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境等等。
本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明也可在其中由通过通信网络链接的远程处理设备执行任务的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。
参考图7,用于实现本发明的各个方面的示例性系统可以包括计算机700形式的通用计算设备。组件可包括但不限于各种硬件组件(诸如处理单元701)、数据存储702(诸如系统存储器)、以及将包括数据存储702在内的各种系统组件耦合到处理单元701的系统总线703。系统总线703可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。
计算机700通常包括各种计算机可读介质704。计算机可读介质704可以是能由计算机700访问的任何可用介质,并同时包含易失性和非易失性介质以及可移动、不可移动介质,但不包括传播信号。作为示例而非限制,计算机可读介质704可包括计算机存储介质和通信介质。计算机存储介质包括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来存储所需信息并可以被计算机700访问的任何其他介质。通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语已调制数据信号摂是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上面各项中的任何项的组合也包括在计算机可读介质的范围内。计算机可读介质可被实现为计算机程序产品,诸如存储在计算机存储介质上的软件。
数据存储或系统存储器702包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)之类的易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)包含有助于诸如启动时在计算机700中元件之间传递信息的基本例程,它通常被存储在ROM中。RAM通常包含处理单元701可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制性,数据存储702保存操作系统、应用程序、其他程序模块、和程序数据。
数据存储702还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,数据存储702可以是对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,以及对诸如CD ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。上文所描述的并且在图7中所显示的驱动器以及它们的关联的计算机存储介质,为计算机700提供对计算机可读取的指令、数据结构、程序模块及其他数据的存储。
用户可通过用户接口705或诸如平板、电子数字化仪、话筒、键盘和/或定点设备(通常指的是鼠标、跟踪球或触摸垫)等其它输入设备输入命令和信息。其他输入设备可以包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。另外,语音输入、使用手或手指的手势输入、或其它自然用户接口(NUI)也可与适当的输入设备(诸如话筒、相机、平板、触摸垫、手套、或其它传感器)一起使用。这些及其他输入设备常常通过耦合到系统总线703的用户输入接口705连接到处理单元701,但是,也可以通过其他接口和总线结构,如并行端口、游戏端口或通用串行总线(USB),来进行连接。监视器706或其他类型的显示设备也通过诸如视频接口之类的接口连接至系统总线703。监视器706也可以与触摸屏面板等集成。注意到监视器和/或触摸屏面板可以在物理上耦合至其中包括计算设备700的外壳,诸如在平板型个人计算机中。此外,诸如计算设备700等计算机还可以包括其他外围输出设备,诸如扬声器和打印机,它们可以通过输出外围接口等连接。
计算机700可使用至一个或多个远程设备(诸如远程计算机)的逻辑连接707在网络化或云计算环境中操作。远程计算机可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且一般包括上面相对于计算机700所述的许多或全部元件。图7中所描述的逻辑连接包括一个或多个局域网(LAN)和一个或多个广域网(WAN),但是,也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当在联网或云计算环境中使用时,计算机700可通过网络接口或适配器707连接至公共或私有网络。在一些实施例中,使用调制解调器或用于在网络上建立通信的其它装置。调制解调器可以是内置或外置的,它经由网络接口707或其它适当的机制连接至系统总线703。诸如包括接口和天线的无线联网组件可通过诸如接入点或对等计算机之类的合适的设备耦合到网络。在联网环境中,相关于计算机700所示的程序模块或其部分可被存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其他手段。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (12)

1.一种在计算环境中用于分析正在执行的进程的方法,所述方法包括:
从所述正在执行的进程生成进程快照,其中所述进程快照和正在执行的进程被允许独立地运行,并且所述进程快照是在不需要创建所述正在执行的进程的执行和存储器的完整轨迹的情况下使用共享存储器页来有效创建的所述正在执行的进程的副本;
将诊断工具与快照进程相关联;以及
使用所述诊断工具从所述进程快照中收集数据,而不影响所述正在执行的进程。
2.如权利要求1所述的方法,其特征在于,所述进程快照包括使用页表复制和写时复制操作的对所述正在执行的进程的克隆。
3.如权利要求1所述的方法,其特征在于,进一步包括:
从所述正在执行的进程中生成一个或多个附加的进程快照;以及
比较来自所述进程快照中任意进程快照的数据以标识随着时间的存储器使用方面的改变。
4.如权利要求3所述的方法,其特征在于,进一步包括:
基于历史收集数据来调整何时生成所述一个或多个附加的进程快照。
5.如权利要求3所述的方法,其特征在于,进一步包括:
将所述诊断工具与所述附加的快照进程中的至少一个相关联;以及
使用所述诊断工具从至少一个附加的进程快照中收集数据。
6.如权利要求1所述的方法,其特征在于,进一步包括:
检查所述进程快照的存储器,同时允许所述正在执行的进程运行。
7.如权利要求1所述的方法,其特征在于,所述进程快照在触发事件发生时被生成。
8.如权利要求1所述的方法,其特征在于,进一步包括:
在创建所述快照进程的同时挂起所述正在执行的进程。
9.在计算环境中的一种包括用于调试正在执行的进程的功能的计算机系统,所述计算机系统包括:一个或多个处理器;一个或多个计算机可读介质;一个或多个被作为存储在所述计算机可读介质上的计算机可执行指令来实现的计算机模块,当由一个或多个处理器执行时,所述计算机可执行指令使得处理器如下执行:
从所述正在执行的进程中生成进程快照,所述进程快照包括所述正在执行的进程的克隆,所述进程快照和正在执行的进程被允许独立地运行,并且所述进程快照是在不需要创建所述正在执行的进程的执行和存储器的完整轨迹的情况下使用共享存储器页来有效创建的所述正在执行的进程的副本;
将诊断工具与快照进程相关联;以及
使用所述诊断工具从所述进程快照中收集数据,而不影响所述正在执行的进程。
10.如权利要求9所述的计算机系统,其特征在于,进一步包括:
从所述正在执行的进程中生成一个或多个附加的进程快照;以及
比较来自所述进程快照中任意进程快照的数据以标识随着时间的存储器使用方面的改变。
11.一种包括用于执行如权利要求1-8中的任一项所述的方法的装置的计算机系统。
12.一种具有指令的计算机可读存储介质,所述指令在被执行时使机器执行如权利要求1-8中的任一项所述的方法。
CN201380041353.XA 2012-08-04 2013-08-01 使用轻量进程快照的历史软件诊断 Active CN104520819B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/567,034 2012-08-04
US13/567,034 US8909990B2 (en) 2012-08-04 2012-08-04 Historical software diagnostics using lightweight process snapshots
PCT/US2013/053110 WO2014025594A1 (en) 2012-08-04 2013-08-01 Historical software diagnostics using lightweight process snapshots

Publications (2)

Publication Number Publication Date
CN104520819A CN104520819A (zh) 2015-04-15
CN104520819B true CN104520819B (zh) 2019-02-26

Family

ID=48980340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380041353.XA Active CN104520819B (zh) 2012-08-04 2013-08-01 使用轻量进程快照的历史软件诊断

Country Status (5)

Country Link
US (2) US8909990B2 (zh)
EP (1) EP2880536B1 (zh)
CN (1) CN104520819B (zh)
BR (1) BR112015002267B1 (zh)
WO (1) WO2014025594A1 (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710357B2 (en) * 2012-08-04 2017-07-18 Microsoft Technology Licensing, Llc Function evaluation using lightweight process snapshots
US8909990B2 (en) 2012-08-04 2014-12-09 Microsoft Corporation Historical software diagnostics using lightweight process snapshots
US10162693B1 (en) * 2012-10-18 2018-12-25 Sprint Communications Company L.P. Evaluation of mobile device state and performance metrics for diagnosis and troubleshooting of performance issues
US9386463B1 (en) 2012-11-19 2016-07-05 Sprint Communications Company L.P. Application risk analysis
CN104123219B (zh) * 2013-04-28 2017-05-24 国际商业机器公司 测试软件的方法和设备
US9396200B2 (en) * 2013-09-11 2016-07-19 Dell Products, Lp Auto-snapshot manager analysis tool
US10223230B2 (en) 2013-09-11 2019-03-05 Dell Products, Lp Method and system for predicting storage device failures
US9454423B2 (en) 2013-09-11 2016-09-27 Dell Products, Lp SAN performance analysis tool
US9317349B2 (en) 2013-09-11 2016-04-19 Dell Products, Lp SAN vulnerability assessment tool
US9720758B2 (en) 2013-09-11 2017-08-01 Dell Products, Lp Diagnostic analysis tool for disk storage engineering and technical support
US9690671B2 (en) 2013-11-01 2017-06-27 Cloudera, Inc. Manifest-based snapshots in distributed computing environments
US9514087B2 (en) * 2013-11-06 2016-12-06 International Business Machines Corporation Dynamic data collection communication between adapter functions
US10289411B2 (en) 2013-11-18 2019-05-14 Microsoft Technology Licensing, Llc Diagnosing production applications
US9436411B2 (en) 2014-03-28 2016-09-06 Dell Products, Lp SAN IP validation tool
US9262300B1 (en) * 2014-06-24 2016-02-16 Google Inc. Debugging computer programming code in a cloud debugger environment
WO2016015276A1 (en) 2014-07-31 2016-02-04 Hewlett-Packard Development Company, L.P. Analysis of system information
US9632915B2 (en) * 2014-10-29 2017-04-25 Microsoft Technology Licensing, Llc. Historical control flow visualization in production diagnostics
US9612939B2 (en) 2014-10-29 2017-04-04 Microsoft Technology Licensing, Llc. Diagnostic workflow for production debugging
WO2016121077A1 (ja) * 2015-01-30 2016-08-04 株式会社日立製作所 ダンプファイル生成方法及び装置
US9946625B2 (en) * 2015-03-18 2018-04-17 New Iron Group, Inc. Diagnostic tool and method for efficient software development
US9983933B2 (en) * 2015-10-15 2018-05-29 International Business Machines Corporation Accelerating system dump capturing
US10180886B2 (en) * 2015-11-16 2019-01-15 Red Hat, Inc. Recreating a computing environment using tags and snapshots
EP3262519A1 (en) * 2015-11-25 2018-01-03 Hewlett-Packard Enterprise Development LP Configuration of a memory controller for copy-on-write
US11734430B2 (en) * 2016-04-22 2023-08-22 Hewlett Packard Enterprise Development Lp Configuration of a memory controller for copy-on-write with a resource controller
EP3291103B1 (en) * 2016-09-01 2019-11-06 Huawei Technologies Co., Ltd. System and method for creating a snapshot of a subset of a database
US10216610B2 (en) 2016-09-27 2019-02-26 International Business Machines Corporation Debug session analysis for related work item discovery
US10169198B2 (en) 2017-04-24 2019-01-01 International Business Machines Corporation Aggregating data for debugging software
WO2019013033A1 (ja) * 2017-07-10 2019-01-17 日本電信電話株式会社 コールスタック取得装置、コールスタック取得方法、および、コールスタック取得プログラム
US10541042B2 (en) 2018-04-23 2020-01-21 Microsoft Technology Licensing, Llc Level-crossing memory trace inspection queries
US10747645B2 (en) 2018-04-27 2020-08-18 Microsoft Technology Licensing, Llc Selectively tracing portions of computer process execution
US10740219B2 (en) 2018-04-27 2020-08-11 Workman Nydegger Selectively tracing portions of computer process execution
US10698792B2 (en) 2018-05-02 2020-06-30 Microsoft Technology Licensing, Llc Execution control with cross-level trace mapping
US10997058B2 (en) * 2018-07-30 2021-05-04 EMC IP Holding Company LLC Method for performance analysis in a continuous integration pipeline
US11392541B2 (en) * 2019-03-22 2022-07-19 Hewlett Packard Enterprise Development Lp Data transfer using snapshot differencing from edge system to core system
US11797569B2 (en) * 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US11409637B2 (en) 2019-11-07 2022-08-09 Netflix, Inc. Page simulation system
US11954012B2 (en) * 2022-02-04 2024-04-09 Microsoft Technology Licensing, Llc Client-side telemetry data filter model
CN117573565A (zh) * 2024-01-16 2024-02-20 麒麟软件有限公司 调试历史信息复现方法、装置及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981243B1 (en) * 2000-07-20 2005-12-27 International Business Machines Corporation Method and apparatus to debug a program from a predetermined starting point

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0690378A1 (en) 1994-06-30 1996-01-03 Tandem Computers Incorporated Tool and method for diagnosing and correcting errors in a computer programm
US5694539A (en) 1994-08-10 1997-12-02 Intrinsa Corporation Computer process resource modelling method and apparatus
US5621886A (en) 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US5675644A (en) 1995-09-26 1997-10-07 Qualcomm Incorporated Method and apparatus for canceling echo accounting for delay variations
US5796819A (en) 1996-07-24 1998-08-18 Ericsson Inc. Echo canceller for non-linear circuits
JP2000501542A (ja) 1997-07-01 2000-02-08 プログレス ソフトウェア コーポレイション ネットワーク・アプリケーション用のテスト及びデバッグツール
US6282701B1 (en) 1997-07-31 2001-08-28 Mutek Solutions, Ltd. System and method for monitoring and analyzing the execution of computer programs
DE19831320A1 (de) 1998-07-13 2000-01-27 Ericsson Telefon Ab L M Digitales adaptives Filter und akustischer Echokompensator
US6745344B1 (en) 1999-11-19 2004-06-01 Oracle International Corporation Debug and data collection mechanism utilizing a difference in database state by using consecutive snapshots of the database state
US6671825B1 (en) 1999-11-19 2003-12-30 Oracle International Corporation Method and apparatus for debugging a software program
US7058928B2 (en) 1999-12-23 2006-06-06 Identify Software Ltd. System and method for conditional tracing of computer programs
DE10036278A1 (de) 2000-07-26 2002-02-07 Bosch Gmbh Robert Verfahren zur Überwachung eines Programmablaufs mittels einer Debug Logik
CA2321019A1 (en) * 2000-09-27 2002-03-27 Ibm Canada Limited-Ibm Canada Limitee Capturing snapshots of a debuggee's state during a debug session
US6993751B2 (en) 2001-05-14 2006-01-31 Microsoft Corporation Placing exception throwing instructions in compiled code
CA2347647A1 (en) 2001-05-15 2002-11-15 Ibm Canada Limited-Ibm Canada Limitee Storing and restoring snapshots of a computer process
US6996806B2 (en) 2001-09-21 2006-02-07 International Business Machines Corporation Graphical view of program structure during debugging session
US6854073B2 (en) 2001-09-25 2005-02-08 International Business Machines Corporation Debugger program time monitor
US7047519B2 (en) 2001-09-26 2006-05-16 International Business Machines Corporation Dynamic setting of breakpoint count attributes
US6964036B2 (en) 2002-05-21 2005-11-08 International Business Machines Corporation Descriptive variables while debugging
US7296259B2 (en) 2002-09-11 2007-11-13 Agere Systems Inc. Processor system with cache-based software breakpoints
US6901581B1 (en) 2002-10-02 2005-05-31 Eridon Corporation Method for software debugging via simulated re-execution of a computer program
US7155708B2 (en) 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
US20040196405A1 (en) 2003-04-04 2004-10-07 Thomas Spinelli Method and apparatus for listening to audio corresponding to a PIP display
US7222264B2 (en) 2004-03-19 2007-05-22 Intel Corporation Debug system and method having simultaneous breakpoint setting
US8490064B2 (en) 2004-05-21 2013-07-16 Oracle International Corporation Hierarchical debug
US8136096B1 (en) 2004-07-23 2012-03-13 Green Hills Software, Inc. Backward post-execution software debugger
US20060059146A1 (en) 2004-09-16 2006-03-16 International Business Machines Corporation Method and system for tracing components of computer applications
US7903137B2 (en) 2004-10-15 2011-03-08 Lifesize Communications, Inc. Videoconferencing echo cancellers
US20060143412A1 (en) 2004-12-28 2006-06-29 Philippe Armangau Snapshot copy facility maintaining read performance and write performance
US7958486B2 (en) 2005-04-22 2011-06-07 Sap Ag Methods and systems for data-focused debugging and tracing capabilities
US20060288332A1 (en) 2005-06-21 2006-12-21 Microsoft Corporation Workflow debugger
US9146832B2 (en) 2005-10-14 2015-09-29 Oracle International Corporation Debugging functionality embedded in an application
US9268666B2 (en) * 2005-10-21 2016-02-23 Undo Ltd. System and method for debugging of computer programs
GB0521465D0 (en) * 2005-10-21 2005-11-30 Law Gregory E W System and method for debugging of computer programs
US7890941B1 (en) 2005-11-10 2011-02-15 Oracle America, Inc. Binary profile instrumentation framework
US7849445B2 (en) 2005-12-20 2010-12-07 Sap Ag Remote user interface for external connections
US20070168997A1 (en) 2005-12-20 2007-07-19 Duong-Han Tran Debugging of remote application software on a local computer
US8429613B2 (en) 2006-10-31 2013-04-23 Microsoft Corporation Stepping and application state viewing between points
US20080155330A1 (en) 2006-11-27 2008-06-26 Sourcecode Technology Holding, Inc. Methods and apparatus for debugging a workflow process
US8108839B2 (en) 2006-11-30 2012-01-31 International Business Machines Corporation Method and apparatus for tracing execution of computer programming code using dynamic trace enablement
US7870356B1 (en) 2007-02-22 2011-01-11 Emc Corporation Creation of snapshot copies using a sparse file for keeping a record of changed blocks
US8069371B2 (en) * 2007-04-26 2011-11-29 Hewlett-Packard Development Company, L.P. Method and system for remotely debugging a hung or crashed computing system
US8060866B2 (en) 2007-10-19 2011-11-15 GE Intelligent Platforms, Inc Systems and methods for debugging multiple workflow instances
US8484623B2 (en) 2008-03-26 2013-07-09 Avaya, Inc. Efficient program instrumentation
US8566796B2 (en) 2008-04-04 2013-10-22 Sas Institute Inc. Systems and methods for interactions with software probes
US7886021B2 (en) 2008-04-28 2011-02-08 Oracle America, Inc. System and method for programmatic management of distributed computing resources
US8543998B2 (en) 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
US8423961B2 (en) 2008-06-06 2013-04-16 Microsoft Corporation Simulating operations through out-of-process execution
US8312434B2 (en) 2008-07-02 2012-11-13 International Business Machines Corporation Finding the source statement of the definition of a storage location
US8799884B2 (en) 2008-08-13 2014-08-05 Qualcomm Incorporated Software application performance enhancement
US8291261B2 (en) 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
US8745596B2 (en) 2009-02-05 2014-06-03 Microsoft Corporation Program debugging with dynamically inserted instrumentation
GB0908913D0 (en) 2009-05-26 2009-07-01 Univ Dundee Software development tool
US8656222B2 (en) 2009-07-30 2014-02-18 Vmware, Inc. Method and system for recording a selected computer process for subsequent replay
US8402446B2 (en) 2009-11-30 2013-03-19 International Business Machines Corporation Associating probes with test cases
US8706844B2 (en) 2009-12-02 2014-04-22 Sap Ag Provision of troubleshooting tools in a network system
US20110137820A1 (en) 2009-12-09 2011-06-09 Reisbich Julia Graphical model-based debugging for business processes
US8595709B2 (en) 2009-12-10 2013-11-26 Microsoft Corporation Building an application call graph from multiple sources
US8522176B2 (en) 2010-05-11 2013-08-27 Synopsys, Inc. Method of recording and replaying call frames for the testbench
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
US8856742B2 (en) 2010-06-11 2014-10-07 International Business Machines Corporation Distributed debugging
US8468124B2 (en) 2010-06-30 2013-06-18 International Business Machines Corporation Debugging workflows
US8671393B2 (en) 2010-10-21 2014-03-11 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific dynamic breakpoints
CN102129408B (zh) 2011-04-14 2013-09-25 电子科技大学 一种基于记录回放技术的嵌入式软件调试装置和方法
US20120324236A1 (en) 2011-06-16 2012-12-20 Microsoft Corporation Trusted Snapshot Generation
US10229031B2 (en) 2011-07-15 2019-03-12 Microsoft Technology Licensing, Llc. Debugging inline functions in optimized code
US9645913B2 (en) 2011-08-03 2017-05-09 Daniel Geist Method and apparatus for debugging programs
US8656361B2 (en) 2012-02-06 2014-02-18 Microsoft Corporation Debugging code visually on a canvas
US8990780B2 (en) 2012-03-29 2015-03-24 International Business Machines Corporation Setting breakpoints in optimized instructions
US9111033B2 (en) 2012-04-17 2015-08-18 International Business Machines Corporation Compiling source code for debugging with user preferred snapshot locations
US8910126B2 (en) 2012-04-18 2014-12-09 International Business Machines Corporation Compiling source code for debugging with variable value restoration based on debugging user activity
US20130318504A1 (en) 2012-05-25 2013-11-28 Johan Eker Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams
US8856600B2 (en) 2012-06-21 2014-10-07 Breakingpoint Systems, Inc. JTAG-based programming and debug
US9009679B2 (en) 2012-06-28 2015-04-14 International Business Machines Corporation Determining snapshot placement
US9459989B2 (en) 2012-07-26 2016-10-04 Adobe Systems Incorporated Method and apparatus for reverse debugging source code using causal analysis
US9710357B2 (en) 2012-08-04 2017-07-18 Microsoft Technology Licensing, Llc Function evaluation using lightweight process snapshots
US8909990B2 (en) 2012-08-04 2014-12-09 Microsoft Corporation Historical software diagnostics using lightweight process snapshots
US20140068569A1 (en) 2012-08-31 2014-03-06 Microsoft Corporation User directed profiling
US9110682B2 (en) 2012-10-19 2015-08-18 Microsoft Technology Licensing Llc State machine control of a debugger
US9244810B2 (en) 2013-05-23 2016-01-26 Nvidia Corporation Debugger graphical user interface system, method, and computer program product
US10127138B2 (en) 2013-06-06 2018-11-13 Microsoft Technology Licensing, Llc. Debugging native code by transitioning from execution in native mode to execution in interpreted mode
US9477575B2 (en) 2013-06-12 2016-10-25 Nvidia Corporation Method and system for implementing a multi-threaded API stream replay
US20150052400A1 (en) 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
US10289411B2 (en) 2013-11-18 2019-05-14 Microsoft Technology Licensing, Llc Diagnosing production applications
US9612939B2 (en) 2014-10-29 2017-04-04 Microsoft Technology Licensing, Llc. Diagnostic workflow for production debugging
US9632915B2 (en) 2014-10-29 2017-04-25 Microsoft Technology Licensing, Llc. Historical control flow visualization in production diagnostics

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981243B1 (en) * 2000-07-20 2005-12-27 International Business Machines Corporation Method and apparatus to debug a program from a predetermined starting point

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LIbckpt:Transparent Checkpointing under Unix;James S Plank ET AL;《Proceedings of Usenix Winter Technical Conference》;19950101;第213-223页

Also Published As

Publication number Publication date
EP2880536B1 (en) 2019-09-25
US10324823B2 (en) 2019-06-18
WO2014025594A1 (en) 2014-02-13
EP2880536A1 (en) 2015-06-10
BR112015002267A2 (pt) 2017-08-08
US20150127991A1 (en) 2015-05-07
US8909990B2 (en) 2014-12-09
CN104520819A (zh) 2015-04-15
US20140040669A1 (en) 2014-02-06
BR112015002267B1 (pt) 2022-03-08

Similar Documents

Publication Publication Date Title
CN104520819B (zh) 使用轻量进程快照的历史软件诊断
CN105745626B (zh) 基于进程快照的诊断生产应用
Oaks Java Performance: The Definitive Guide: Getting the Most Out of Your Code
Ma et al. Protracer: Towards practical provenance tracing by alternating between logging and tainting
CN105518629B (zh) 云部署基础结构确认引擎
US8332765B2 (en) Problem reporting system based on user interface interactions
CN104520820B (zh) 使用轻量进程快照的功能评估
Altman et al. Performance analysis of idle programs
Shen et al. I/O System Performance Debugging Using Model-driven Anomaly Characterization.
Bezemer et al. Performance optimization of deployed software-as-a-service applications
US9910758B2 (en) Computer flight recorder with active error detection
Pan et al. Blind Men and the Elephant: Piecing together Hadoop for diagnosis
Ramachandran Detecting and recovering from in-core hardware faults through software anomaly treatment
Locasto et al. Quantifying application behavior space for detection and self-healing
Dow et al. A host-independent supervised machine learning approach to automated overload detection in virtual machine workloads
Rezazadeh Performance Analysis of Complex Multi-Thread Applications Through Critical Path Analysis
Thorpe et al. File Timestamps for Digital Cloud Investigations.
Bovenzi On-line detection of anomalies in mission-critical software systems
Agada A Distributed Digital Body Farm for Dynamic Monitoring of File Decay Patterns on the NTFS Filesystem
WO2023086139A1 (en) Automatically identifying a diagnostic analyzer applicable to a diagnostic artifact
Li et al. Understanding the performance of enterprise applications
WO2022232139A1 (en) Application crash testing platform
Alexandrov et al. High-level performance modeling of task-based algorithms
Burton et al. Tracing and reexecuting operating system calls for reproducible performance experiments
Richard Solaris" Performance And Tools: Dtrace And Mdb Techniques For Solaris 10 And Opensolaris

Legal Events

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

Effective date of registration: 20171016

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant