Xcodedebugging器:查看variables的值
我在UITableViewController中的代码:
delegate.myData = [myData objectAtIndex:indexPath.row];
如何在Debugger中看到delegate.myData
或indexPath.row
的值? delegate.myData
应该是一个数组,而indexPath.row
是一个int
。 我只能看到对象delegate
和indexPath
内存地址,但myData
和row
哪里?
检查这个如何在Xcodedebugging器中查看NSDictionaryvariables的内容?
我也用
po variableName print variableName
在控制台。
在你的情况下是可以执行的
print [myData objectAtIndex:indexPath.row]
要么
po [myData objectAtIndex:indexPath.row]
你也可以:
- 设置一个断点来暂停执行。
- 该对象必须在执行范围内
- 将鼠标指针移到对象或variables上
- 将出现一个黄色的工具提示
- 将鼠标移到工具提示上
- 点击上下两个小箭头
- 上下文菜单将popup
- select“打印说明”,将执行[对象描述]
- 说明将显示在控制台的输出中
恕我直言,有点隐藏和麻烦…
我同意其他的海报Xcode作为一个开发环境应该包括一个简单的方法来debuggingvariables。 好消息是有一个!
search后,没有find一个简单的答案/教程如何在Xcode中debuggingvariables,我去探索与Xcode本身,发现这个(至less对我来说)非常有用的发现。
如何轻松地在Xcode 4.6.3中debugging你的variables
在Xcode的主屏幕中,确保通过单击屏幕截图中显示的右上angularbutton来查看底部的debugging区域。
现在,通过单击代码区域的边框,设置一个Breakpoint(断点) – 您希望程序暂停的代码行。
现在在debugging区域中查找这个button,然后点击中间的button。 你会注意到你的区域现在被分成两部分。
现在运行你的应用程序
当你的程序执行过程中遇到第一个断点时,你将在左边看到在那个断点处可用的所有variables。
您可以展开variables上的左侧箭头以获得更详细的信息。 甚至可以使用search字段来隔离您想要的variables,并在“步入”断点的范围时,实时查看variables。
在debugging区域的右侧,您可以使用鼠标右键单击想要的variables来发送打印variables。
正如你所看到的,这个上下文菜单里有很多有趣的debugging选项。 例如Watch已经提示input命令,甚至编辑值…改变variables的运行时间值!
好的,我希望这对你有帮助。 请投票!
你的困惑源于这样一个事实: 声明的属性不是(必须与(实例)variables相同)命名。
expression
indexPath.row
相当于
[indexPath row]
和任务
delegate.myData = [myData objectAtIndex:indexPath.row];
相当于
[delegate setMyData:[myData objectAtIndex:[indexPath row]]];
假定合成属性的标准命名。
而且, delegate
可能被声明为id<SomeProtocol>
types的id<SomeProtocol>
,也就是说,编译器在这一点上还不能为delegate
提供实际的types信息,debugging器依赖于编译时提供的信息。 由于id
是genericstypes,因此在delegate
没有关于实例variables的编译时信息。
这就是为什么你没有看到myData
或row
作为variables的原因。
如果要检查发送-row
或-myData
的结果,可以使用命令p
或po
:
p (NSInteger)[indexPath row] po [delegate myData]
或者使用expression式窗口(例如,如果您知道您的delegate
是实际typesMyClass *
,则可以添加expression式(MyClass *)delegate
,或者右键单击delegate
,select“ View Value as…
并键入delegate
的实际types(例如MyClass *
)。
话虽如此,我同意debugging器可能会更有帮助:
-
可以select告诉debugging器窗口使用运行时types信息而不是编译时信息。 它会减慢debugging器,授予,但会提供有用的信息;
-
声明的属性可以显示在一个名为属性的组中,并允许(可选)直接在debugging器窗口中进行检查。 这也会减慢debugging器,因为需要发送消息/执行一个方法来获取信息,但也会提供有用的信息。
您可以在运行时将值打印到控制台窗口上。 以下是步骤:
- 放置一个你想获得值的断点
- 现在执行一步一步的debugging。
- 将光标放在要在运行时检查其值的variables/委托上。
- 现在这将显示variables/委托的描述
- 点击“我”会显示详细的说明
- 这也将打印细节到控制台窗口。
这变得有点复杂。 这些对象是自定义类或结构体,在Xcode中查看它们并不像在其他开发环境中那么容易。
如果我是你,我会NSLog你想看到的值,有一些描述。
即:
NSLog(@"Description of object & time: %i", indexPath.row);
尝试运行 – > Show->expression式
input数组的名称或任何你想要的。