Xcode調試、性能優化基本工具使用簡單整理

斷點

1. 普通斷點

在行號那兒點一下就加上了,最經常使用的斷點,略。html

2. 條件斷點

不少時候問題代碼是被高頻調用直到特定條件下才出現問題的,這種時候可使用條件斷點。數組

在任意斷點右擊選擇Edit Breakpoint便可編輯條件。工具

3. 符號斷點

有時候咱們沒有源碼只有頭文件,不方便加普通斷點,可使用符號斷點。在斷點界面點擊 + ,選擇Ad Symbolic Breakpoint,便可添加符號斷點。性能

4. 異常斷點

拋出Objc異常時的斷點,因爲Objc能捕獲異常的場景很是少,所以用處比較有限。學習

LLDB經常使用命令

  1. p/po(print/print object)優化

    • 打印一個值/對象
  2. calldebug

    • 調用一個方法並輸出返回值
  3. expr指針

    • 執行一個表達式,經常使用於運行時改變數據,構造特定場景
  4. bt調試

    • 打印當前堆棧信息

更多參考iOS——調試工具LLDB學習htm

殭屍對象

用於對野指針問題的分析。

野指針問題致使的crash堆棧每每千奇百怪,其根本緣由是對象被釋放後,對應的內存是不肯定何時會被覆蓋多少的,形成後面訪問時可能正常也可能crash。

殭屍對象就是消除這種不肯定性的方法,在對象被釋放時,會生成一個殭屍類,把對應內存中的isa替換掉,指向這個殭屍類。這樣在經過野指針訪問這個對象時就能夠100%捕獲了。

此功能能夠在「Edit Scheme…」 —> 「Run」 —> 「Diagnostics」 —> 「Zombie Objects」中打開,應當只在debug時使用,對性能影響比較大。

Address Sanitizer

Address Sanitizer是個更底層一點的手段,殭屍對象只對Objc對象的野指針有效,而Address Sanitizer能夠檢查任意內存訪問錯誤的問題。典型場景如C的數組越界。

Time Profile

Time Profile用於檢測CPU使用耗時,方便優化性能問題。

若是某個操做存在性能問題,能夠在操做前,開啓Time Profile Record,操做後Stop。Time Profile會記下期間全部方法的CPU耗時,並從高到低排列。因而就能夠方便地找到耗性能的瓶頸進行鍼對性地優化。

Allocations

Allocations工具用於分析內存問題。

在應用啓動後,特定操做先後進行打點,便可看到期間全部的內存增加來源。

對於可復現的內存問題很是方便定位。

相關文章
相關標籤/搜索