xcode 中lldb命令调试
调出lldb命令窗口分:程序发生奔溃,会在下面窗口中显示lldb输入框
设置断点是为了模拟奔溃,当然你也可以故意写一个越界的数组测试
print命令
打印变量的值可以使用print命令,该命令如果打印的是简单类型,则会列出简单类型的类型和值。如果是对象,还会打印出对象指针地址,如下所示:
在输出结果中我们还能看到类似于$0,$1这样的符号,我们可以将其看作是指向对象的一个引用,我们在控制面板中可以直接使用这个符号来操作对应的对象,这些东西存在于LLDB的全名空间中,目的是为了辅助调试。
上面的print命令会打印出对象的很多信息,如果我们只想查看对象的值的信息,则可以使用po(print object的缩写)命令,如下所示:
expression
在开发中,我们经常会遇到这样一种情况:我们设置一个视图的背景颜色,运行后发现颜色不好看。嗯,好吧,在代码里面修改一下,再编译运行一下,嗯,还是不好看,然后再修改吧~~这样无形中浪费了我们大把的时间。在这种情况下,expression命令强大的功能就能体现出来了,它不仅会改变调试器中的值,还改变了程序中的实际值。我们先来看看实际效果,如下所示:
image
image命令的用法也挺多,首先可以用它来查看工程中使用的库,如下所示:
我们还可以用它来查找可执行文件或共享库的原始地址,这一点还是很有用的,当我们的程序崩溃时,我们可以使用这条命令来查找崩溃所在的具体位置,如下所示:
这段代码在运行后会抛出如下异常:
根据以上信息,我们可以判断崩溃位置是在main.m文件中,要想知道具体在哪一行,可以使用以下命令:
可以看到,最后定位到了main.m文件的第23行,正是我们代码所在的位置。
我们还可以使用image lookup命令来查看具体的类型,如下所示:
可以看到,输出结果中列出了NSURL的一些成员变量及属性信息。
image命令还有许多其它功能,具体可以参考Executable and Shared Library Query Commands。
转载自: 南峰子的技术博客 (LLDB调试器使用简介)