天天看點

xcode反彙編調試iOS模拟器程式(七)Debug與Release的差別

首先自己寫一段代碼,加好斷點,分别在Build Configuration為Debug和Release下運作,檢視反彙編

debug下的反彙編結果:

release下的反彙編結果:

單從行數上看,debug是127行,release是72行,差距很大。這當然是編譯器優化的結果,特别對于一些分支多的、帶循環的源碼時,反彙編和源碼的實際動作執行順序都可能不同。

可以看到:

CGRectMake的實質是個inline函數,在debug版還存在單獨的函數代碼入口位置,但release版就沒有了。

函數的開頭表示debug版要用108位元組作為局部變量空間,而release版隻需要44位元組。

這樣的差別還有很多,可通過反彙編自己的代碼來觀察到。當調試進入系統的代碼時,可以看出都是release版的,即debug版連結的仍是release版的靜态庫。

繼續閱讀