Python实战社群
Java实战社群
长按识别下方二维码,按需求添加
![640.webp (1).jpg](https://img6.php1.cn/3cdc5/98a6/3b4/53399e3d0932ca50.png)
扫码关注添加客服
进Python社群▲
![微信图片_20200223084351_副本.png](https://img6.php1.cn/3cdc5/98a6/3b4/c50baa8f6e14e7d4.png)
扫码关注添加客服
进Java社群▲
作者丨 ->
来源丨知识小集(ID:zsxjtip)
在调试程序时,要查看某段代码的执行情况,我们一般是通过 Step Over 一步步往下走,看看执行到每条指令时程序的运行情况。我们写一段简单代码
int main(int argc, const char * argv[]) {@autoreleasepool {NSLog(@"Hello, World!");NSInteger i = 2;NSLog(@"%ld", i);NSInteger j = 5;NSLog(@"%ld", j);NSInteger k = i + j;NSLog(@"%ld", k);}return 0;
}
我们可以在第一个 NSLog
处打个断点,然后一步步往下走。不过有时候我们可能点得有点急,错过了某一步。这时如果要重新再来,可能流程比较长,又得重新启动程序,一步一步来。还好 Xcode 提供了一个小功能,可以移动当前断点,这种移动可以是往前移动,也可以是往后移动,如下图所示。
![](https://img6.php1.cn/3cdc5/98a6/3b4/2f032d502e62a6be.gif)
拖动后,会弹出一个提示框,提示是否移动指令指针?
![](https://img6.php1.cn/3cdc5/98a6/3b4/3372b8ab1bcc85f7.gif)
当然这实际上会对运行造成一定的影响,比如某个变量会移动后,会保持原先运行所处位置的值,而这个值可能并不是你想要的;另外如果将运行位置移出某一作用域,或者扰乱了程序的实际操作步骤,也可能会造成程序的崩溃。
![](https://img6.php1.cn/3cdc5/98a6/3b4/87cf8c1790d17e4e.gif)
弹框的内容也说得很清楚:
Moving the instruction pointer can result in unexpected behavior, including crashing your application.
所以,这个操作适合于小步回退,不会破坏程序的实际运行,亦或是直接跳过一些无关紧要的操作,例如单纯的打印日志等。
![](https://img6.php1.cn/3cdc5/98a6/3b4/6194d8764286497d.png)
程序员专栏 扫码关注填加客服 长按识别下方二维码进群
![](https://img6.php1.cn/3cdc5/98a6/3b4/7aef29557d6e7cc5.png)
近期精彩内容推荐:
字节跳动半夜给员工发钱,全员沸腾了
为何程序员上班时间总戴个耳机?
为什么建议大家使用 Linux 开发?
盘点提高国内访问GitHub速度的9种方案
![](https://img6.php1.cn/3cdc5/98a6/3b4/f939905097dc428f.jpeg)
![](https://img6.php1.cn/3cdc5/98a6/3b4/8e95fb01634e784b.png)
在看点这里
好文分享给更多人↓↓