没有Objective-C描述 - 为什么?

时间:2013-11-28 11:12:51

标签: objective-c xcode debugging lldb

我真的不知道为什么在这个特定项目中我的调试器非常“禁用”。

例如,我想获取一个对象的信息:

(lldb) po [_model dictionaryValue]
[no Objective-C description available]

我想知道为什么会这样。它使调试非常困难,而且只在当前的项目上进行。我猜我在某些时候已经对设置做了些什么。这几乎是我尝试检查的任何po someObject。但是,可以在调试控制台左侧的窗格中看到范围中的变量。

我在Xcode 5上,我的项目中有Cocoapods,它是一个单元测试目标。

任何见解或任何解决方法?

更新

为清楚起见,部分测试用例如何实现:

@interface WWCGateModelTests : XCTestCase  
{  
    WWCGate *_model;  
}  
@end  

@implementation WWCGateModelTests  
- (void)setUp
{
    [super setUp];
    // Put setup code here; it will be run once, before each test case.

    _model = [WWCGate loadGateModelWithIdentifier: kGateName];  // defined, not nil
}

- (void)tearDown  
{  
    [super tearDown];  

    NSError *error = nil;
    [_model saveModelOrError:&error];

    // Breakpoint here.  po _model does not print the model.    
    // This has been possible with other projects...  po error will print  
    // nil to the console.  How is an ivar not in scope?
}

3 个答案:

答案 0 :(得分:3)

这可能发生,因为单元测试目标通常设置为使用“发布”配置运行。 “释放”配置是调试符号被剥离或优化的配置。

如果您确定使用的是非优化的符号就地调试版应用程序,我怀疑您不会遇到此问题。您可以在Xcode的方案编辑器中更改它(例如,在执行“Test”或“Profile”时,使用“Debug”配置)。

答案 1 :(得分:0)

你确定你没有在原始类型上使用它吗?使用p intVariable

每个对象至少会通过打印类和内存地址来响应description

答案 2 :(得分:0)

我已经找到了问题(但尚未完全解决)。它与地幔框架有关。在它的描述方法中,它想要吐出它在那时生成的NSDictionary的内容。我设置模型的方式有问题我相信创建这个字典(可能基于我如何配置一些属性)基本上是失败的。

我覆盖了描述方法以返回标准描述:

- (NSString*)description
{
    return [NSString stringWithFormat:@"<%@: %p>", self.class, self];
}

地球上的一切都很美好。 ; - )

感谢那些特别耐心的人。有关此问题的更详细讨论可以在以下帖子的更新3中找到:http://horseshoe7.wordpress.com/2013/05/26/hands-on-with-the-mantle-model-framework/