Xcode调试工具:快速入门指南

了解调试工具的方法将使您成为一个更好,更高效,更快乐的程序员。 了解一些方便的技巧,以帮助您入门。

在本文中,我将分享一些有关如何使用Xcode中集成的调试工具的提示。 我将向您展示一些LLDB命令以及如何将它们与断点一起使用。 希望我会为您提供新的武器来分析您的代码并查找错误。

Xcode在其主窗口中集成了一组调试工具。 下图显示了在断点处暂停应用程序时Xcode调试器的布局。

本地数据库

LLDB是一个开源调试器,它是LLVM编译器开发套件的一部分。 它与Xcode捆绑在一起,您可以在窗口右下角的控制台中找到它,如上图所示。

以下是一些基本的LLDB命令:

救命

help命令列出了所有可用的命令。 如果您想了解有关特定命令的更多信息,可以键入help 以获取有关该特定命令的所有详细信息。

打印

打印命令非常有用。 它使您可以在控制台上打印变量值,从而不必诉诸诸如记录变量值或简化程序行为之类的技术。

上图显示了一种非常常见的做法,其中包括记录变量以检查其值。

通过在给变量赋值后放置一个断点(第5行),程序将暂停执行。 如图所示,在这里我们可以使用print命令检查变量的值。

LLDB会进行前缀匹配,因此如果键入prinprip会很好。 您还可以使用$ 0引用结果和类型,例如,p $ 0 + 10获得109的结果。

表达

expression命令也非常有用,因为它允许您修改变量的值。 在上面的示例中,我们使用表达式命令将count的值更改为80。 如您所见,它不仅改变了调试器中变量的值,而且实际上改变了程序中的变量值。 您可以从print命令的结果中观察到这一点。

断点

下图显示了Xcode的断点管理器。 在这里,您可以管理程序中的断点列表,并执行其他操作,例如删除或启用和禁用断点。

一种非常普遍的做法是使用断点来停止程序的执行,检查其状态并搜索错误。 但是,还有更多……

断点为我们提供了其他可能性,正如我们在本文中已演示的那样。

通过使用断点,我们证明了我们可以指示程序何时停止,以及使用LLDB在其上运行命令,从而使我们能够检查和修改变量。

Xcode允许我们创建符号断点,从而可以节省大量时间来查找错误。

要创建符号断点,请单击XCode调试管理器左下角的“ +”按钮,然后选择“符号断点”。

将出现一个弹出窗口,允许您插入任何符号,并且只要在程序中的任何位置或在Apple的代码中执行此符号,断点将导致程序停止。

在图片中,您可以看到一个示例。 我将变量计数转换为NSNumber类型的对象。 我插入了符号[NSNumber numberWithUnsignedInteger:] ,以便在进行转换时使程序停止。

如您在图片中所见,即使在该特定代码行中没有断点,执行符号时程序也会停止。

结合LLDB和断点

将LLDB命令与断点结合使用会带来很多可能性。

我将向您展示两个实际示例,以演示如何结合使用这两种工具,以帮助您从程序中获取更多信息,并根据需要对程序进行更改。

在上面的示例中,我使用了一个断点来停止程序,并使用LLDB命令po ,该命令对当前线程上的表达式求值,并设法检索了视图控制器的视图层次结构。

利用我在视图层次结构上获得的信息,我可以使用LLDB进行一些操作。

使用UIView(0x7fec90406350)中的内存引用,我可以使用expression命令将其存储起来,然后更改其背景颜色。

如图所示,在继续执行程序后,视图的背景色被修改为红色。

让我们尝试另一个示例。 我使用情节提要向视图控制器添加了一个按钮,并为其连接了一个IBOutlet。 我称它为myButton

使用po命令,我发现点击按钮时谁在接收动作。

首先,我获得了与myButton关联的所有目标,并从该评估中获得了信息,我设法提取了与之关联的动作。

包裹起来…

在本文中,我试图对调试工具如何帮助您理解代码并节省大量时间提供一些见解。

LLDB和Breakpoints还可以做很多事情,因此继续探索!

由JoãoGameiro撰写| Cleverti的移动开发人员

本文最初发布在Cleverti的博客上