2011-01-31 29 views
4

TL; DR版本當多個項目同時打開時,XCode如何知道要調試哪個項目?

這個問題出現的原因的事實,我有多個框架(我已經建立)和一個客戶的項目,使用所述框架。現在,當我打開客戶端項目並嘗試調試到框架中時,它不起作用。但是,如果我將該項目與打開的框架相關聯,那麼調試似乎可以正常工作(儘管有些奇怪的問題與我看不到觸發的斷點有關)。

我已經看過蘋果的文檔,也許答案是埋在那裏的,但我找不到它在Xcode調試指南。

長的版本

原因這個問題對我來說重要的是,一個同事和我有一個關於頭是如何在我們所建立的框架進口的分歧。

我在方式使用框架頭(與客戶端應用程序)的傾向:

#import "FrameworkA/HeaderA.h" 
#import "FrameworkB/HeaderB.h" 

他,在另一方面,有利於導入框架頭(與客戶端應用程序)是這樣的:

#import "HeaderA.h" 
#import "HeaderB.h" 

並在客戶端應用程序的構建目標中指定頭部搜索路徑。

更復雜的是,這些框架中的一些具有相互依賴性。例如,FrameworkB具有FrameworkA在他的格式引用標題:

#import "HeaderA.h" 

他這樣做的說法,這是隻有在調試,如果我們進口頭這樣的作品。對我來說,在頭文件導入樣式和調試之間會有關係,這似乎很可疑,但我並不確定XCode在調試過程中如何選擇文件以鏈接到問題。

在此先感謝您對此查詢的任何幫助。

+0

Apple框架似乎遵循您導入的風格。 – Moshe 2011-01-31 19:02:45

回答

1

您將項目引用添加到目標,並確保Xcode知道在哪裏可以找到調試符號。

#import <FrameworkA/HeaderA.h> 

這是要走的路(用於內部和外部聲明)。原因?隨着圖書館的發展,另一種方法更可能引起問題。附加資格可以消除任何情況下的歧義(除非當然在搜索路徑中有兩個FrameworkA/),最好現在明確地限定文件,而不是當客戶告訴你他們不能在其他庫中使用庫時,或者他們可以只在某些情況下使用它們。那麼你必須去解決這些問題並提出要求(這些東西在不方便的時候發生= p)。這是確保您開發出強大界面的一個簡單方法。

也許人們忽視的最重要的部分是產品的位置:爲您的目標使用定製的中央構建位置 - 許多人使用xcodeproject的默認位置。否則,Xcode可能無法找到調試信息。

最後,在Xcode中調試複雜的項目可以相當......讓我們稱之爲'有問題'。所以不要指望調試體驗是完美的,即使你已經正確配置了一切。所有更多的理由是在Xcode早期將斷言和單元測試集成到您的開發週期中。事實是,無論您嘗試多麼辛苦,調試器都可能毫無用處 - 這不是一個新問題。希望LLDB能夠改善我們的調試體驗。

好運

+0

感謝您的回覆。所以Xcode根據它們的構建位置調試到項目中?這是相對於被調試/運行的項目嗎?誠實地說, – fjlksahfob 2011-02-01 16:10:28

相關問題