你永远不能“退一步”,但你可以往上走。整个堆栈是“当前”的,是当前状态的一部分。但是在程序中没有办法后退,因为根据定理,程序基本上是不可逆的。 正如Gerard de Visser所提到的,从理论上讲,记录执行的每一步肯定是可能的。但我想有个更简单的解决办法。 你能做的就是使用PhpStorm的快捷方式来“转到最后一个光标位置”(VS Code也有这样的快捷方式,我相信所有其他IDE都有)。在Ubuntu上,它是shift + alt + left-arrow,但在Windows上,我认为它是ctrl + alt + left-arrow。当抛出异常时,我经常使用它。然后,我在中设置了一个断点,并重新运行代码。
3条答案
按热度按时间goucqfw61#
是的,你可以后退一步。Debugger选项卡中的Frames窗口显示了到达该点所采用的执行路径。默认情况下,调试器只是选择当前帧。
您可以轻松地单击任何框架,或使用箭头键上下移动以查看变量的状态,甚至查看该点在代码中的位置。
hujrc8aj2#
有一个名为
time travel debugging
的东西,可以通过代码进行后退。它记录了一个php脚本的执行,这样你就可以重放它,并且可以在反向模式下执行。使用PhpStorm和Xdebug的一个例子是:https://github.com/sidkshatriya/dontbug
kx7yvsdv3#
你永远不能“退一步”,但你可以往上走。整个堆栈是“当前”的,是当前状态的一部分。但是在程序中没有办法后退,因为根据定理,程序基本上是不可逆的。
正如Gerard de Visser所提到的,从理论上讲,记录执行的每一步肯定是可能的。但我想有个更简单的解决办法。
你能做的就是使用PhpStorm的快捷方式来“转到最后一个光标位置”(VS Code也有这样的快捷方式,我相信所有其他IDE都有)。在Ubuntu上,它是
shift
+alt
+left-arrow
,但在Windows上,我认为它是ctrl
+alt
+left-arrow
。当抛出异常时,我经常使用它。然后,我在中设置了一个断点,并重新运行代码。