PhpStorm 在调试器中后退一步

问题描述 投票:0回答:3

这个问题之前已经在其他 IDE 中被问过,但是 PHPStorm 呢?有没有办法在调试时退一步?

特别是在抛出异常之后,我想轻松地后退一步。或者至少能够看到调用堆栈,这样我就可以快速查看需要在哪里设置断点,因为目前我只需从头开始再次运行并尝试在异常之前停止。

php debugging phpstorm xdebug
3个回答
4
投票

是的,你可以退后一步。调试器选项卡中的Frames窗口显示了到达此点所采取的执行路径。默认情况下,调试器仅选择当前帧。

您可以轻松地单击任何框架,或使用箭头键上下移动来查看变量的状态,甚至该点在代码中的位置。


2
投票

有一种叫做

time travel debugging
的东西可以让我们向后退一步浏览代码。它记录 php 脚本的执行,以便您可以重播它,并且能够以反向模式单步执行。

与 PhpStorm 和 Xdebug 配合使用的一个示例是:https://github.com/sidkshatriya/dontbug


1
投票

编辑:我应该提到的第一件事是,您应该能够在屏幕上或日志文件中显示的堆栈跟踪中看到抛出异常的位置(请参阅 php 错误日志记录)。然后,您可以在引发异常的位置上方一两行放置一个断点并再次运行。

原答案:

你永远不能“后退”,但你可以往上走。整个堆栈是“当前”的,是当前状态的一部分。但程序中没有办法后退,因为根据定理,程序在本质上是不可逆转的。

正如 Gerard de Visser 提到的,理论上当然可以记录执行的每一步。但我认为有一个更简单的解决方案。

可以做的是使用 PhpStorm 快捷方式“转到最后一个光标位置”(VS Code 也有这样的快捷方式,我确信所有其他 IDE 也有这样的快捷方式)。在 Ubuntu 上,它是

shift
+
alt
+
left-arrow
,但在 Windows 上我认为它是
ctrl
+
alt
+
left-arrow
。当抛出异常时我总是使用这个。然后我设置一个断点并重新运行代码。

© www.soinside.com 2019 - 2024. All rights reserved.