Objective c 没有可用的目标C描述-为什么?

Objective c 没有可用的目标C描述-为什么?,objective-c,xcode,debugging,lldb,Objective C,Xcode,Debugging,Lldb,我真的不知道为什么在这个特定的项目中,我的调试器被极度“禁用” 例如,我想获取一个对象的信息: (lldb)po[\u模型字典值] [没有可用的目标C描述] 我想知道为什么会这样。这使得调试非常困难,而且只在当前的项目上进行。我猜我在某个时候对设置做了些什么。它几乎出现在我试图检查的任何对象上。但是,范围中的变量可以在调试控制台左侧的窗格中看到 我在Xcode 5上,我的项目中有cocoapod,这是一个单元测试目标 有什么见解或解决方法吗 更新: 为了清楚起见,测试用例如何实现的一部分: @i

我真的不知道为什么在这个特定的项目中,我的调试器被极度“禁用”

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

(lldb)po[\u模型字典值]
[没有可用的目标C描述]

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

我在Xcode 5上,我的项目中有cocoapod,这是一个单元测试目标

有什么见解或解决方法吗

更新:

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

@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?
}

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


我怀疑,如果你确定你使用的是应用程序的非优化、就地调试版本,你就不会有这个问题。您可以在Xcode的scheme editor中更改它(例如,在执行“测试”或“配置文件”时,使用“调试”配置)。

您确定没有在基本类型上使用它吗?在这些上使用
p intVariable


每个对象都将至少通过打印类和内存地址来响应
描述

我已经找到了这个问题(但还没有完全解决)。它与地幔结构有关。在其描述方法中,它希望吐出在该点生成的NSDictionary的内容。我认为我建立模型的方式有问题,所以创建这个字典(可能基于我如何配置某些属性)基本上是失败的

我重写了description方法以返回标准描述:

- (NSString*)description
{
    return [NSString stringWithFormat:@"<%@: %p>", self.class, self];
}
-(NSString*)说明
{
返回[NSString stringWithFormat:@',self.class,self];
}
地球上的一切又好又好了


感谢那些特别有耐心的人。关于这个问题的更详细的讨论可以在以下帖子的更新3中找到:

是的,在方案中已经设置为该值。即便如此,如果我的测试目标设置为调试配置,这是否意味着POD也是使用调试配置构建的?(我正在测试的数据模型基于Mantle框架,它在我的项目中是一个Pod)
po someObject
打印
[someObject description]
的返回值,即使在发布版本中也应该可用(它是NSObject协议的一部分,所有NSObject都符合)。关于O.P.的问题是什么。也许他在对一个超出范围的变量调用“
po
”?不管怎样,我们可能需要更多的信息。可能他正试图
po
一个超出范围的对象!?方法中的断点。在左窗格(即控制台输出旁边)中,可以检查变量。只是po不起作用。您用
po\u型号得到了什么?呃。。。你读过问题了吗?:-)[没有可用的客观描述]回答试图帮助你的人的好方法。我想继续问你在哪里打电话,它是否在范围内,
dictionaryValue
方法的返回值是多少。但我似乎太笨了,无法理解你的问题。对不起,我不是故意粗鲁的。但它清楚地写下了发生的事情。我用另一种方式说:在其他项目中正常工作的东西在这个项目中不起作用。我在作用域中,因为我的断点在方法中停止,其中包含该变量。po someObject正在返回相同的内容问题:您在何处将值设置为_model?非常确定。:-)po一个整数也将产生与调试程序不同的响应。。。
po[objectdescription]会发生什么情况?
如果po\u模型不起作用,我无法想象它上的任何方法会如何。但不管怎样,同样的事情。那么
p object
呢?给我一个指针地址:(lldb)p\u model(WWCGate*)$0=0x09963c50