已触发一个断点_5个Xcode断点提示

本文介绍了Xcode中断点的使用技巧。断点可在特定代码行暂停应用程序以检查状态。包括用户定义断点,可在所有项目使用;通过Git共享断点;用调试器命令操作的异常断点;符号断点,调用特定方法或函数时触发;测试失败断点,可直接跳至失败断言处,加快调试流程。

Xcode断点使我们能够调试和查找令人讨厌的错误的解决方案

没有断点,在代码中到处都有很多打印语句。我们可能都知道断点的基本原理,但还是有更多发现!


Xcode中的断点是什么?

可以将断点放置在特定的代码行中,并在执行过程中暂停应用程序以检查该点的状态。可以在应用程序运行之前和运行期间的任何时间设置断点。

可以在断点导航器中找到概述,其中显示了所有激活和禁用的断点。调试栏包含一个断点激活按钮,用于临时禁用断点以免暂停您的应用程序。

021cb0634585741cff8db97a25365d8a.png

Xcode中的蓝色断点激活按钮


1.用户定义的断点

对于创建的每个新Xcode项目,您可能要做的几件事之一就是添加方便的断点,以帮助您调试许多错误。这是一个多余的过程,可以通过Xcode中的用户定义断点来解决。

f5e8aebaa0491fa20a4109705c48743a.png

在Xcode中移动断点

移动断点后,它将显示在其自己的部分中,其中包含所有用户定义的断点。

91d6011639eb0377862f09e21167543a.png

Xcode中的用户断点概述

这将使您在所有打开的Xcode项目中都可以使用断点。这包括您创建的项目以及从Internet下载的项目。任何项目!


2.通过Git共享断点

有时,您发现自己正在查看同事的工作流程,并且意识到他有一些出色且有用的断点。

您可以让他通过Git共享这些断点,而不必询问他有关设置相同断点的指示。

f72038f102cf5de487109c789ac56a1b.png

通过Xcode中的Git共享断点

这会将断点移动到带有共享断点的自己的部分。这使获得所有共享断点的概述非常容易。

e176bf78da604b748c68e03ea205be18.png

断点导航器中的共享断点概述

断点是共享的,保持断点的存在也是共同的责任。

因此,如果您的一位同事决定删除该断点,则一旦您从Git中获取最新更改,该断点也将从您的断点列表中删除。


3.使用调试器命令操作的异常断点

我使用多年的用户定义断点之一是异常断点。

当引发或捕获特定类型的异常时,将触发异常断点。每当遇到异常断点时,我都会po $arg1在单击后立即键入该语句objc_exception_throw以获取有关引发的异常的更多信息:

9a76b4a37c6f8a96f7e41f4016a3cd49.png

在抛出异常时打印出更多信息

使用断点中定义的操作,可以很容易地将其自动化。遇到断点时,将执行所有已定义的操作,这可能是调试应用程序的宝贵方法。

e8811daeb41cdcbb4204f2fe59dcc0b8.png

在异常断点中输出参数

当然,现在您将直接将其设为用户定义的断点,因此您不必在每次创建新的Xcode项目时都创建一个断点!


4.符号断点

在调试过程中,通常会通过控制台中的消息告诉我们创建符号断点的过程。自动布局相关的符号断点可能是最著名的一个:

// Will attempt to recover by breaking constraint <0x600000d7aad0 uiview:0x7fbe55e95420.leading="=" uilabel:0x7fbe55e95d20.leading>// Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.0x600000d7aad0>

当调用特定的方法或函数时,将触发符号断点。可以从断点导航器中添加它们:

9ea9cc084147c3a669d2f68bc51ad13a.png

image.png

添加符号断点

您在断点中填充关键字,只要调用该符号,它将暂停您的应用程序以开始调试。

204beab215635dc0e3b057a5f9673d74.png

为UIViewAlertForUnsatisfiableConstraints添加符号断点

在这种特定情况下,它使您可以快速导航到激活了无法满足的约束的代码。漂亮整齐!

但这不是约束错误断点吗?

足够令人惊讶的是,这些错误没有触发约束错误断点。根据Apple论坛上的该帖子,此断点仅适用于AppKit。

有用的符号断点,用于集合视图布局调试

如上所述创建一个断点,但是使用UICollectionViewFlowLayoutBreakForInvalidSizes符号可以调试集合视图流布局中的任何布局问题。

尽管调试这类问题仍然不容易,但这至少会为您指明正确的方向,并为您提供调试的起点。


5.用测试失败断点捕获失败的测试

当测试失败时,您通常会开始浏览测试列表以查找失败的测试。尽管这是可行的,但是如果您在流程中,效率并不是很高。

为此,我们具有测试失败断点,该断点将直接跳至测试中的失败断言,从而使您可以直接开始修复失败的测试。

0fa9cf8214558b29ba645b22ae458730.png

添加测试失败断点


结论

而已!更好地使用断点的五个技巧。这是加快调试工作流程的好方法。

翻译自:https://medium.com/better-programming/5-xcode-breakpoints-tips-you-might-not-yet-know-13ed4976ce3e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值