Xcodedebugging器:查看variables的值

我在UITableViewController中的代码:

delegate.myData = [myData objectAtIndex:indexPath.row]; 

如何在Debugger中看到delegate.myDataindexPath.row的值? delegate.myData应该是一个数组,而indexPath.row是一个int 。 我只能看到对象delegateindexPath内存地址,但myDatarow哪里?

替代文字

检查这个如何在Xcodedebugging器中查看NSDictionaryvariables的内容?

我也用

 po variableName print variableName 

在控制台。

在你的情况下是可以执行的

 print [myData objectAtIndex:indexPath.row] 

要么

 po [myData objectAtIndex:indexPath.row] 

你也可以:

  1. 设置一个断点来暂停执行。
  2. 该对象必须在执行范围内
  3. 将鼠标指针移到对象或variables上
  4. 将出现一个黄色的工具提示
  5. 将鼠标移到工具提示上
  6. 点击上下两个小箭头
  7. 上下文菜单将popup
  8. select“打印说明”,将执行[对象描述]
  9. 说明将显示在控制台的输出中

恕我直言,有点隐藏和麻烦…

我同意其他的海报Xcode作为一个开发环境应该包括一个简单的方法来debuggingvariables。 好消息是有一个!

search后,没有find一个简单的答案/教程如何在Xcode中debuggingvariables,我去探索与Xcode本身,发现这个(至less对我来说)非常有用的发现。

如何轻松地在Xcode 4.6.3中debugging你的variables

在Xcode的主屏幕中,确保通过单击屏幕截图中显示的右上angularbutton来查看底部的debugging区域。

调试区域按钮

Xcode 4.6.3中的调试区域

现在,通过单击代码区域的边框,设置一个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的编译时信息。

这就是为什么你没有看到myDatarow作为variables的原因。

如果要检查发送-row-myData的结果,可以使用命令ppo

 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器,因为需要发送消息/执行一个方法来获取信息,但也会提供有用的信息。

您可以在运行时将值打印到控制台窗口上。 以下是步骤:

  1. 放置一个你想获得值的断点
  2. 现在执行一步一步的debugging。
  3. 将光标放在要在运行时检查其值的variables/委托上。
  4. 现在这将显示variables/委托的描述
  5. 点击“我”会显示详细的说明
  6. 这也将打印细节到控制台窗口。

在控制台窗口上打印详细信息的截图

这变得有点复杂。 这些对象是自定义类或结构体,在Xcode中查看它们并不像在其他开发环境中那么容易。

如果我是你,我会NSLog你想看到的值,有一些描述。

即:

 NSLog(@"Description of object & time: %i", indexPath.row); 

尝试运行 – > Show->expression式

input数组的名称或任何你想要的。