Chrome源码调试有“步过”、“步入”和“步出”按钮。但没有向后倒带的功能,以查看先前的函数。
Chrome源码调试有“步过”、“步入”和“步出”按钮。但没有向后倒带的功能,以查看先前的函数。
如果你在右侧的“调用堆栈”中单击并查看父函数,你可以以某种方式向后跳转。
如我在这个答案中所说,您可以通过设置新断点并重新启动实际函数来后退。希望这样做可以解决问题。
我需要的在右侧边栏中,右键单击调用栈中的项目 -> 重新启动帧。这将从第一行重新启动所选函数。
我发现的一个快速解决方法是,在你处于断点中间时对源文件进行一些小的更改(空格、注释或其他任何更改),然后按Ctrl+s(保存文件),它会跳回到该源文件的第一个断点。然后您可以检查您的更改(F10“逐步进入”),如果需要,进行另一个更改,保存并重新启动。这是目前我所知道的最快速的方法。
这正是我一直在寻找的,而且我首先找到了这个链接。我想这可能是一个更高级的问题版本。
帮助搜索的正确关键字是“时间旅行调试”。
最初在名为“Node-ChakraCore”的nodejs版本中首次提出。
https://github.com/nodejs/node-chakracore/blob/master/TTD-README.md
replay.io
免责声明:我的朋友在这家公司工作,我是通过他了解到replay.io的。他没有要求我写这篇文章,我是出于自己的主动性写的,因为反向调试很棒。我还没有测试过它。我希望了解这种可能是闭源工具的知识有助于推动开源技术的发展。他们有一些开源项目,例如:https://github.com/replayio/devtools,但我不知道它覆盖了多少功能。 https://www.replay.io/似乎具有倒退/时间旅行调试功能。它可能不是完全的FOSS,但该网站声明“Replay将始终免费提供给个人”,所以至少是免费的。replay.io 似乎是基于追踪的:首先记录一次执行,然后您可以重复播放完全相同的内容,如果需要,还可以倒退时间。
一旦您有了追踪记录,每次执行都完全相同,包括例如获取 HTTP 响应等异步事件的确切时间,因此录制可能包含诸如异步事件之类的内容。
这种类型的反向调试器的常见用例是每次运行 CI 都要通过它运行,以便能够重现取决于竞争条件的错误。
在编译语言领域,令人惊叹的开源 Mozilla rr 实现了一些类似的功能。
一个很酷的事情是,replay.io 似乎能够在回溯时呈现 DOM,就像在浏览器上每个步骤都呈现一样。