我目前正在用Xcode 4.3.2編寫iOS應用程序。在我的代碼的大部分地方,使用LLDB進行調試工作得很好。但是,在某些時候,我正在逐步瀏覽我的代碼時收到一條奇怪的消息。當我將鼠標懸停在伊娃,它說XLD 4.3與LLDB中奇怪的錯誤消息
錯誤[IRForTarget]:找不到Objective-C的間接伊娃符號OBJC_IVAR _ $ _ MyFancyClass.iVar
而不是顯示我的價值。但是,在Variables View
中,我可以看到它很好。直到我選擇Print Description of ...
也就是說,因爲這樣,Xcode崩潰了... 當我使用GDB時,懸停工作,但變量的類型和值是錯誤的。
我認爲我的代碼出了問題,導致調試器失敗。但是,代碼運行良好。我很樂意提供一些樣本代碼,但是班級相當長,我無法確定我擰緊的確切位置。那麼有沒有人遇到類似的行爲?
更新:實際上,這似乎發生在我的代碼中的任何地方,而不僅僅是在某些特定的文件。如果有幫助,當LLDB顯示上述消息時,GDB總是顯示擁有該iVar的Class對象,而不是iVar本身。 看起來好像內存管理有問題。例如,如果我這樣說
[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA];
選擇被調用,即使我有
[notificationCenter postNotificationName:bar object:objB];
您的代碼可能很長,但似乎沒有足夠的人遇到此問題。你可以只顯示出現這種行爲的代碼的彙總版本嗎? – 2012-04-10 14:26:55
那麼,因爲它發生在我的代碼絕對無處不在,我真的不知道我可以發佈什麼...... – Phlibbo 2012-04-10 15:09:12
我只是在這裏猜測所以我不發佈答案,但如果您嘗試使用調試器會發生什麼控制檯並使用「po」打印對象?另外,你可能有任何特殊的gdb配置嗎?這是你試圖調試的包含庫嗎?您是否構建啓用調試信息?仔細檢查你的構建設置(生成調試符號,優化級別,調試信息格式)。 – 2012-04-10 15:31:10