天天看點

xcode反彙編調試iOS模拟器程式(一)檢視反彙編

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>

繼續閱讀