如何在 LLDB 中调试成员变量(即数组、字典)?

How to debug member variable (ie., Array, Dictionary) in LLDB?

我已经在接口中声明了一个全局数组/字典,如下所示。

@interface ViewController ()
{

    NSDictionary *dictionary;

    NSArray *array;

}

我正在执行 API 调用并将值存储在这些数组和字典中。我想在运行时打印 LLDB 中 array/dictionary 的内容。

当我尝试打印这些全局变量时,出现以下错误。

(lldb) po assigneeArr
error: warning: Stopped in a context claiming to capture an Objective-C object pointer, but 'self' isn't available; pretending we are in a generic context
error: use of undeclared identifier 'assigneeArr'
error: 1 errors parsing expression

那么我该如何调试这个全局声明的变量呢?

这些不是全局变量;它们是实例变量,所以你需要一个 ViewController 的实例才能看到它们的值。

一旦你有了实例,那么它就像使用 -> 运算符一样简单(vc 是实例):

po vc->dictionary

注意:我建议使用下划线作为实例变量名称的前缀,以避免与参数和局部变量混淆。

请执行以下步骤:
1. 按键盘 Command+Shift+y. 它将为您的项目打开调试区域。
2. 在调试区的右下角可以找到Trash的图标。在垃圾桶图标附近,您可以找到两个选项,例如 隐藏变量视图隐藏控制台。两者都打开(它将显示为蓝色边框)
3. 在 ViewController 上使用 字典/数组 的地方设置断点。
4. 您可以在调试区域的左侧找到您的 dictionary / array 值。
5. 请右击您的词典/数组。你将得到第一个选项 i.e.Print 字典/数组的描述
6. 点击后你会在console中得到它的全部值。 (调试区右侧)

您也可以参考下面的屏幕截图。

通过更改 Apple LLVM 7.1 语言模块 中的 Enable Clang Module Debugging 最终解决了我的问题,如下图所示

参考: