Mac OS X動態鏈接器(dyld
)具有用於此目的的功能:DYLD_IMAGE_SUFFIX
。它將允許您動態加載您鏈接到的任何框架或共享庫的調試版本。那麼你不需要一個完全獨立的.framework
包;只需創建另一個名爲MyLibrary_debug
的共享庫。例如,在的CoreFoundation虎包括調試和分析變異(看起來像他們還沒有收到安全更新,但無論如何):
% ls -l /System/Library/Frameworks/CoreFoundation.framework/Versions/A/
total 20080
-rwxr-xr-x 1 root wheel 1M Sep 10 17:55 CoreFoundation*
-rwxr-xr-x 1 root wheel 6M Apr 24 2007 CoreFoundation_debug*
-rwxr-xr-x 1 root wheel 2M Apr 24 2007 CoreFoundation_profile*
利用以上蘋果的框架,標準的「調試」後綴是_debug
。 (Xcode中的可執行文件上的常規窗格中的「在加載框架時使用[debug]後綴」設置爲DYLD_IMAGE_SUFFIX=_debug
)。
你可能會想到用_debug
以及是一個好主意,但我建議你不這樣做,因爲蘋果已經打破了多次(someexamples)的_debug
版本的框架。截至Leopard只有libSystem
,libmx
和libmathCommon
帶有調試變種,但在雪豹他們再次爆發(我自己跑到this problem)。
如果你爲你的調試庫選擇了一個不同的後綴,你不應該觸發蘋果的bug,並且仍然能夠在正常和調試變體之間共享你的框架的其餘部分(頭文件,資源等)。