在Xcode中调试时,可以更改当前执行行吗?

在Xcode中调试时,可以更改当前执行行吗?,xcode,debugging,Xcode,Debugging,调试器允许我拖动小绿线指针,但它似乎没有任何效果,当我单步执行时,它的行为就好像我从未拖动过它一样 只是想知道bug是否是: 它没有正确更改当前执行指针,或者 它让我可以把东西拖走 在Xcode中调试时,可以更改当前执行行吗 是的,可以更改。 它可以工作,在你跨过去,但从下一步点击 请参见此示例: 假设绿色箭头位于“a”中 它进入某个堆栈,当你“跨过”时会打印出来。然后移到“b” 作为: 然后“b”进入堆栈,它将被打印出来。现在通过拖动将>>更改为“e”,如下所示: NSLog(@"

调试器允许我拖动小绿线指针,但它似乎没有任何效果,当我单步执行时,它的行为就好像我从未拖动过它一样

只是想知道bug是否是:

  • 它没有正确更改当前执行指针,或者
  • 它让我可以把东西拖走
在Xcode中调试时,可以更改当前执行行吗

是的,可以更改。

它可以工作,在你跨过去,但从下一步点击

请参见此示例:

假设绿色箭头位于“a”中

它进入某个堆栈,当你“跨过”时会打印出来。然后移到“b”

作为:

然后“b”进入堆栈,它将被打印出来。现在通过拖动将>>更改为“e”,如下所示:

    NSLog(@"a");
    NSLog(@"b");
    NSLog(@"c");
    NSLog(@"d");
>>  NSLog(@"e");
    NSLog(@"f");
现在将打印“b”,指针将移动到下一个语句,即“e”


如果再次将其向后或向前移动,它将改变其位置,但将打印“e”,因为它已保存在准备打印的某个堆栈中。

Xcode将指令指针从左侧拖动到一个全新的可视项,并将其移动到最右侧

汉堡图标(如下图所示)实际上是当前指令指针的拖动手柄


有趣的行为,尽管有些奇怪。很高兴知道它是可以更改的,但对我来说,如果我不能更改当前(即下一条)指令,这似乎是毫无意义的。我不能从“if let”块返回是正常的吗?我在函数的开头3行开始调试,然后我进入“if let”块,如果我试图返回到函数的第一行,我收到错误。
    NSLog(@"a");
>>  NSLog(@"b");
    NSLog(@"c");
    NSLog(@"d");
    NSLog(@"e");
    NSLog(@"f");
    NSLog(@"a");
    NSLog(@"b");
    NSLog(@"c");
    NSLog(@"d");
>>  NSLog(@"e");
    NSLog(@"f");