宽带网速_数据库_人工智能基础知识

企业应用 虚拟云 浏览

小编:简介 这是"故障排除"课程的回顾节点.js应用程序:在SAP Cloud Platform Cloud Foundry中进行调试,发生在最近的SAP Inside Track比利时2019活动中。 在SlideShare上提供了会话幻灯片。 会话概述回顾

简介

这是"故障排除"课程的回顾节点.js应用程序:在SAP Cloud Platform Cloud Foundry中进行调试,发生在最近的SAP Inside Track比利时2019活动中。

在SlideShare上提供了会话幻灯片。

会话概述回顾博客系列:

正向调试技术和时差调试简介

在调试应用程序和使用断点时,开发人员在遵循程序流程和单步执行语句时采用传统的正向调试技术。有时在已调试的程序中设置断点太晚,当程序到达断点并暂停程序执行时,可能导致错误的代码段已经丢失。通常,开发人员会终止当前调试会话,在程序中较早地设置一个新断点,云服务器服务,并重复执行程序,条件是程序流会碰到一个新设置的断点。程序到达一个新的断点,程序执行暂停,开发人员重新开始调试。

或者,在程序源代码的早期设置断点也是很常见的,但是存在过早设置断点的风险,并且需要长时间单步执行已执行语句,直到确定适当的代码段为止。

上述前向调试技术的两种方法都会增加开发人员找到根本原因并暂停执行所需的时间在引起问题的代码段处对已调试程序进行恢复。

如果能够从中断点恢复程序的执行,并采取若干步骤返回以分析程序的早期状态,将会很方便。这正是另一种调试技术的目的——反向调试或时间旅行调试——将在本博客中讨论,并将应用于节点.js应用程序。

时间旅行调试在处理两种调试场景时最为相关:

正在运行的程序的反向调试–到分析已调试程序的早期状态,对不再运行的程序进行死后调试(崩溃或终止)–对程序终止的可能原因进行根本原因分析。

用于实施时间旅行调试的标准方法基于记录重放快照体系结构–即,在程序正常执行期间,通过记录程序内不确定的运行时交互来获取程序状态的快照。使用生成和收集的快照,就可以从任何可用的快照开始恢复程序的状态并重放程序的正向流。快照还可以执行反向流—而不是按快照集合的时间顺序单步执行快照,我们可以按相反的顺序运行已收集的快照,并按相反的时间顺序探索程序的状态—本质上是对程序进行反向调试。如果保存了收集到的快照,即使程序不再运行,也可以重放这些快照—例如,程序可能已崩溃或终止,但如果可以使用其执行的早期记录快照,则可以重放这些快照,从而可以对程序进行死后调试。

听起来很不错,不是吗?有一些技术障碍阻碍了这项技术的发展和广泛采用,云服务器2,最显著和重要的是:

在程序前向执行期间收集快照导致的运行时开销-每个快照收集大量有关程序状态的信息,乘以所需快照的数量(由快照生成频率和记录的总持续时间决定)。作为一种副作用,它还会影响存储收集的快照所需的磁盘空间,在反向调试和快照重放模式下单步通过快照时的响应时间和延迟,这是由于在时间序列的每个离散采集点解析快照和恢复程序状态造成的。

有许多运行时的时间旅行调试系统的技术实现。此类系统的目标是提供价格合理的时程调试系统,以解决上述限制,并在最终反向调试功能和系统产生的开销以及与此类功能相关的成本之间找到折衷办法。

中的时程调试工具节点.js

当它一般来说,JavaScript引擎节点.js特别是,可能是最常被提及和使用的实现时间旅行调试系统,已获得了广泛的应用节点.js生态系统,是基于使用:

替代节点.js名为Node ChakraCore的运行时,云数据库计算,另一个名为Jardis的JavaScript调试器实现了前面描述的时间旅行调试原则。对于Visual Studio代码,有一个相关的扩展名NodeChakra Time Travel Debug,它增强了Visual Studio代码调试器的功能,使之具有时间旅行调试所需的功能(如反向步骤和重播):

该扩展名还添加了一个新的调试配置类型,可以用作创建适当调试配置的快捷方式启动一个节点.js应用程序和使用Node ChakraCore运行时:

或者,使用Node ChakraCore中的时间旅行调试功能所需的参数和参数化,可在启动时手动提供节点.js应用程序或为其编写调试配置。

请注意默认值节点.js基于Chrome V8 JavaScript引擎的运行时,目前不支持时间旅行调试

另一个需要提前说明的问题,关于Node ChakraCore引擎:根据目前的文档,"这个项目仍在进行中,没有官方支持节点.js分支",所以节点脉轮核心引擎的使用要慎重考虑,

时程调试在运行

当前网址:http://www.vmchk.com/share/2021/0407/72258.html

 
你可能喜欢的: