2013-11-28 37 views
4

我真的不知道爲什麼在這個特定的項目我的調試器是非常'禁用'。否可用Objective-C說明 - 爲什麼?

例如,我會希望得到一個對象的信息:

(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

你對'po _model'有什麼看法? – Abizern

+0

恩......你看過這個問題嗎? :-) [no Objective-C description available] – horseshoe7

+5

回答試圖幫助你的人的好方法。我打算繼續詢問你在哪裏進行調用,是否在範圍內,'dictionaryValue'方法的返回值是什麼。但我似乎太難以理解你的問題。 – Abizern

回答

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/

3

這可能發生,因爲單元測試目標通常都設置了與「釋放」配置下運行。 「釋放」配置是調試符號已被剝離或優化的配置。

如果您確定自己正在運行應用程序的非優化符號就地調試版本,那麼我懷疑您不會遇到此問題。您可以在Xcode的方案編輯器中更改它(例如,在執行「測試」或「配置文件」時,使用「調試」配置)。

+0

是的,它已經在方案中設置了。即使如此,如果我的測試目標設置爲調試配置,那麼這是否意味着Pods也是使用調試配置構建的? (我測試的My Data模型基於Mantle Framework,它是我項目中的Pod) – horseshoe7

+1

'po someObject'輸出'[someObject description]'的返回值,即使在Release版本中也應該可用(它是NSObject協議的一部分,所有NSObject都符合)。 –

+0

[我們正在就NSChat進行辯論](http://chat.stackoverflow.com/rooms/15942/nschat)瞭解O.P.的問題。也許他在超出範圍的變量上調用「'po」?無論哪種方式,我們可能需要更多信息。 –

0

你確定你沒有在原始類型上使用它嗎?對這些使用p intVariable

每個對象至少會通過打印類和內存地址來響應description

+0

非常確定。 :-) po anInteger也會產生與調試器不同的響應 – horseshoe7

+0

嗯......對於'po [object description]會發生什麼?' –

+0

如果po_model不起作用,我無法想象它上面的任何方法會怎樣。但無論如何,同樣的事情。 – horseshoe7

相關問題