iOS 調試工具

来源:http://www.cnblogs.com/wang-com/archive/2016/10/19/5966600.html
-Advertisement-
Play Games

儀錶 xcode5 引入了調試儀錶,通過儀錶可以直觀的看出應用的CPU和記憶體占用量。運行一個程式,點擊儀錶欄。可以發現當程式處於運行狀態時,調試導航面板會以柱狀圖顯示CPU和記憶體占用量,並隨著應用實時更新占用量數據。需要註意的是,調試導航面板中的數據是根據應用的硬體計算出來的,蘋果電腦的CPU比iO ...


  • 儀錶

   xcode5 引入了調試儀錶,通過儀錶可以直觀的看出應用的CPU和記憶體占用量。運行一個程式,點擊儀錶欄。可以發現當程式處於運行狀態時,調試導航面板會以柱狀圖顯示CPU和記憶體占用量,並隨著應用實時更新占用量數據。需要註意的是,調試導航面板中的數據是根據應用的硬體計算出來的,蘋果電腦的CPU比iOS設備更快,如果在iOS模擬器上運行應用,調試導航面板中顯示的CPU贊用量可能非常低,不低於分析性能問題。

  點擊CPU可以在編輯區域打開CPU占用量報告。

  •   占用百分比(Precentage Utilized)

  根據運行應用設備的CPU核心數顯示CPU占用比。例如,單核設備中最大CPU占用量是100%,而對雙核設備中是200%,所以應用在單核設備中的CPU占用量通常比雙核設備更高。如果應用處於空閑狀態(進入後臺活沒有操作),CPU占用量會顯示0%。

  •   占用環比(Utilization Comparison)

  使用環比圖比較應用與系統中其他進程(Process)的CPU占用百分比。如果應用的CPU占用百分環比不高,但是運行不通暢,那麼可以從該環形圖中查看Other Processes的占用百分比。如果設備中後臺運行的其他應用太多 ,就可能導致Other Processes的占用百分比很高,應用運行速度變慢。

  •   時間-占用比(Utilization over Time)

  使用折線圖顯示應用CPU占用量隨運行時間變化的過程,以及占用量在運行時間內的峰值和谷值。

  •   線程(Threads)

  顯示應用中每一個線程的時間-占用比。

  

  接下來我們打開我們應用 JXTouchTracker ,用手指在應用中繪製線條,手指不要離開屏幕,持續繪製大量線條可以發現應用的CPU占用比迅速升高-手指在屏幕上移動時,JXDrawView會不斷收到 touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 消息並調用 drawRect:(CGRect)rect 重繪自己。繪製的線條越多, drawRect:(CGRect)rect 的工作量就越大,CPU占用比就越高。

  回到弔事導航面板,點擊Memory,打開記憶體占用量報告,如圖:

  和CPU占用量報告類似,記憶體占用量報告直接的顯示了應用記憶體占用的情況,但是Memery部分(位於最下方)顯示的折線圖可能會讓我們誤解:應用似乎始終占用了100%的記憶體。實際上,途中將運行時間內的占用峰值作為100%顯示,因此途中y周的最大值與左側High欄中顯示的數值相同都是58.2MB。

  無論開發何種類型的應用,都應該儘可能降低CPU和記憶體占用量,提高應用的流暢度和用戶體驗。

 

  • Instruments

  從儀錶和占用量報告中可以簡要分析出應用的性能,但是,如果應用的CPU和記憶體占用量過高,需要從代碼中查找性能問題,則可以使用 Instruments ,他提供了比儀錶和占用量報告更詳細的數據分析。

   Instruments 是一中與Xcode緊密集成的調試工具,可以實時監控並統計應用運行時的各項數據,生成詳細的分析報告。它由若幹組件組成,這些組件檢查的事項包括:應用創建了那些對象,每一個方法和函數的CPU占用量、文件I/O和網路I/O等。通過使用這些不同的組件,可以找出程式中的性能瓶頸,發現代碼中的問題。

  •  Allocations 組件

   Allocations 組件可以列出應用創建過的全部對此昂,以及這些對象所占用的記憶體大小。

  當監視某個應用時, Allocations 組件會對這個應用進行性能分析。雖然可以在模擬器上對某個應用進行性能分析,但是在真是的設備上進行可以得到更精確的數據。

  要對當前打開的項目執行性能分析,可以按住位於坐上角的 Run 按鈕不放,然後在新出現的彈出視窗中選擇 Profile

  Xcode會啟動 Instruments 。 Instruments 會顯示一個下拉視窗併列出所有可用的組件。選中 Allocations 。之後 Instruments 會啟動應用並打開 Instruments 的主視窗。

 

 

   Allocations 組件會顯示一張表格,流出應用 執行過的所有記憶體分配。因為數據比較多,所以先過濾,只列出由我們自己編寫的代碼創建的對象。首先在JXDrawView對象上畫若幹線條。然後在視窗 Category 查詢框中輸入 JXLine 

   Allocations 組件會過濾  Object Summary 表格所顯示的條目,只列出和 JXLine 右端的記憶體分配,即我們自己創建的 JXLine 對象。

   #Persistent 列會顯示某種對象的現存個數。 Persistent Bytes 列會顯示這些現存對象占用了多少記憶體。 # Total 列會顯示應用運行至今共創建了多少個某種類型的對象(其中包括已經釋放的對象)。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • GCD定時器 圖片上繪製文字 查找一個視圖的所有子視圖 計算文件大小 UIView的設置部分圓角 計算字元串字元長度,一個漢字算兩個字元 防止滾動視圖手勢覆蓋側滑手勢 去掉導航欄返回的標題 字元串中是否含有中文 dispatch_group的使用 UITextField每四位加一個空格,實現代理 獲 ...
  • 軟引用 和 弱引用 1. SoftReference<T>:軟引用-->當虛擬機記憶體不足時,將會回收它指向的對象;需要獲取對象時,可以調用get方法。 2. WeakReference<T>:弱引用-->隨時可能會被垃圾回收器回收,不一定要等到虛擬機記憶體不足時才強制回收。要獲取對象時,同樣可以調用g ...
  • 一、介紹 先來介紹一下listview更新數據的幾種方法,目前我知道的方法有如下幾種: 1. 每次更新數據時都調用listview.setadapter(); 2. 每次更新數據時都調用adapter.notifydatasetchanged(); 3. 在自定義的adapter里添加更新函數upd ...
  • 撥打電話小編從網上找到三種,在這裡做一些總結和比較 1、基本使用 這種方法,撥打完電話回不到原來的應用,會停留在通訊錄里,而且是直接撥打,不彈出提示! 在iOS9.0之後,這個方法也是可以回到原來的應用 2、推薦使用 這種方法,打完電話後還會回到原來的程式,也會彈出提示! 3、不建議使用,做瞭解就可 ...
  • 思路: 1.創建一個單例 2.把接收的數據存在本地的 plist,不適用於大量數據,每次讀取第一個數據,讀取完成刪除整個 plist,再把剩下的重新存進 plist 3.根據動畫代理,監聽動畫執行結束,將動畫實例置為 nil 4.判斷動畫實例是否為空,使得切換界面,跑馬燈繼續,而不是重新開始 5.切 ...
  • WebView讓我們方便的使用熟悉的Html/JS/Css來開發APP。但是,當出現問題時,卻沒有PC上那麼方便的排查問題。PC上,前端的問題我們可以使用Chrome的開發者工具方便的調試。Android上怎麼調試呢?今天發現Chrome提供了遠程調試! 如果出現的調試視窗是空白的,可能是如下原因造 ...
  • 突然模擬器報錯:unable to boot the simulator(無法啟動模擬器) 試了好幾種解決辦法,刪除所有的模擬器重啟以後再添加,刪除鑰匙串登陸中的證書,重新安裝Xcode都不行 最後通過這種方式解決了 重新啟動mac 進度條載入的時候一直按command+R進入設置界面,打開界面的左 ...
  • UIButton的用處特別多,這裡只記錄下把按鈕應用在圖文顯示的場景,和需要把圖片作為按鈕的背景圖片顯示場景; 另外記錄下在父控制項的子控制項優先顯示方法(控制項置於最前面和置於最後面)。 先上效果圖: 1、當在某個地方既需要顯示圖片,還需要顯示文字,另外還要有點擊功能的時候,這時按鈕是個很好的選擇。 按 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...