我真的不知道为什么在这个特定项目中我的调试器非常“禁用”。
例如,我想获取一个对象的信息:
(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?
}
答案 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/