iOS模拟器程式的實質就是Mac OS X程式,隻不過它需要以模拟器為載體來運作顯示。故它的反彙編代碼指令都是x86 CPU的,不是真機上的arm指令。
研究模拟器程式的反彙編有兩個目的,或叫做好處:
一是為了研究深入到iOS系統的類庫,你可以較容易地發現私有API,以及看到系統的實作。
二是,很直接地,模拟器調試比真機快。而且,相信大多數人更懂x86指令,各類高校教材的彙編教程都不是arm指令的吧。
首先問題是如何看到反彙編代碼:
操作:Xcode頂部菜單->Product->Debug Workflow->Show Disassembly When Debugging打鈎
如果是在調試的過程中打鈎,則調試視窗會立刻更新顯示反彙編代碼,如圖:
以上主要是為了看到自己寫的代碼的反彙編情況,當調試進入不是自己寫的代碼(沒有debug symbol)時,無論是否對這個選項打鈎,都會顯示成反彙編。
例如,在gdb/lldb調試中,break狀态下輸入
再continue之後,如果有發生addSubview操作,不論是自己寫的還是系統操作的,都會進入反彙編斷點:
xcode反彙編調試iOS模拟器程式
<a href="http://blog.csdn.net/hursing/article/details/8697654">(一)檢視反彙編</a>
<a href="http://blog.csdn.net/hursing/article/details/8700964">(二)看懂反彙編</a>
<a href="http://blog.csdn.net/hursing/article/details/8721870">(三)檢視Objective-C函數與參數</a>
<a href="http://blog.csdn.net/hursing/article/details/8752235">(四)自動斷點應用之NSNotificationCenter</a>
<a href="http://blog.csdn.net/hursing/article/details/8755491">(五)調試objc_msgSend函數</a>
<a href="http://blog.csdn.net/hursing/article/details/8766487">(六)函數出入口處的處理與局部變量</a>
<a href="http://blog.csdn.net/hursing/article/details/8766719">(七)Debug與Release的差別</a>