在 Visual Studio 中调试时向后拖动指令指针

Dragging the instruction pointer backward while debugging in Visual Studio

如需演示,请查看 following section of this video

基本上,我知道这在 Visual Studio 社区版 2015 中是可能的。我想知道:

a) 这与 Intellitrace 和 "Historic debugging" 相关吗? b) 这样做会有副作用吗?或者这只是将指令向后移动,仅此而已?

就是将指令指针向后移动,仅此而已,用你自己的话来说。

这意味着:

  • 在你将它拖到哪里和从哪里拖到它之间已经发生的任何副作用已经发生并且不会被逆转。
  • 在指令的同一部分中更改的任何变量仍将更改,它们不会反转为您将指令指针拖动到该点时的任何值

因此您可以使用此调试辅助工具来强制程序采用它没有采用的路径(例如通过将指令指针拖到它跳过的 if 语句中),或跳过(通过拖动指令指针跳过一些你不想执行的代码),或者重新运行一些代码。

但是您必须了解上述限制。如果再次执行代码不安全,那么这样做可能无法帮助您进行调试。

它已经可以使用很长时间了。从你拖动光标的地方发生的一切都已经发生了,所以你基本上是在重新做那一点。

没有真正的后果,除非您正在处理某些东西或保存到数据库等,因为写入相同的现有数据可能会引发异常或扰乱某些数据的处理。

所有已设置的变量(即使您将光标拖动到高于它们初始化的位置)都将保留它们从您向上拖动光标的位置获得的值。