前言
通常程序運行時常見的錯誤大致分為兩類
用戶使用引起的外部錯誤嗤栓,例如缺少參數(shù)、參數(shù)錯誤等
程序運行時產(chǎn)生的內(nèi)部錯誤箍邮,例如內(nèi)存溢出茉帅、空指針、以0做除數(shù)等
針對第一種外部錯誤锭弊,一般是不可控的堪澎,因為用戶的行為是隨機的,所以一般只能采取相應(yīng)的預(yù)防措施味滞,盡最大程度去避免這類問題
針對第二種內(nèi)部錯誤樱蛤,可以通過一些工具及時的找出問題并修正。這里就不得不提及Xcode自帶的檢測調(diào)試工具Instruments了剑鞍。
介紹
Instruments是一個非常靈活刹悴、且強大的工具,可以進行性能分析攒暇、動態(tài)追蹤土匀、代碼分析等,讓我們對程序的內(nèi)部運行更加了解形用。主要可以做以下事情:
用于動態(tài)調(diào)追蹤和分析OS X和iOS的代碼的性能分析和測試工具
支持多線程調(diào)試
支持錄制和回放圖形界面的操作過程
追蹤代碼中的問題(甚至是難以復(fù)現(xiàn)的)
分析程序的性能
實現(xiàn)程序的自動化測試
部分實現(xiàn)程序的壓力測試
執(zhí)行系統(tǒng)級別的通用問題最終調(diào)試
打開方式有以下三種:
快捷鍵:CMD + I(對應(yīng)小寫的i)
Xcode -> Open Developer Tool -> Instruments
項目 -> Product -> Profile
Instruments具體的界面如下所示
Blank:創(chuàng)建一個空的模板就轧,可以自定義添加各種工具
Activity Monitor:跟蹤整個系統(tǒng)的活動,包括 CPU田度、內(nèi)存妒御、網(wǎng)絡(luò)和磁盤。默認情況下镇饺,活動監(jiān)視器模板不會在時間線窗格中顯示網(wǎng)絡(luò)或磁盤活動
Allocations:使用Allocations和VM Tracker工具來測量應(yīng)用程序中的常規(guī)和虛擬內(nèi)存使用情況
Animation Hitches:用于檢測滾動和動畫問題乎莉,以幫助您可視化和研究應(yīng)用程序的圖形管道。通俗來講就是檢測界面流暢度,是否有卡頓情況
App Launch:使用 5 秒時間配置文件和線程狀態(tài)跟蹤調(diào)整應(yīng)用程序啟動性能
Core Data:可以檢測應(yīng)用程序中數(shù)據(jù)的存儲交互惋啃,例如數(shù)據(jù)提取哼鬓、緩存缺失和存儲等
CPU Counters:收集使用時間或基于事件的抽樣方法的性能監(jiān)控計數(shù)器(PMC)事件,使用 Counters 工具來跟蹤 PMC 事件边灭。
CPU Profiler:用于分析 CPU 工作負載的基于周期的分析器异希,使用硬件性能監(jiān)控中斷(PMI)來提供更穩(wěn)定的測量,無論代碼是在性能 CPU 還是效率 CPU 上運行
File Activity:用于檢查系統(tǒng)文件的使用情況绒瘦,可以檢查文件的打開称簿、關(guān)閉、讀和寫操作惰帽,同時也可以檢測文件系統(tǒng)本身的改變憨降,包括權(quán)限和所有權(quán)發(fā)生的改變。
Game Performance:用于檢測游戲性能和幀率
Leaks:用來檢測內(nèi)存的泄漏
Logging:來自統(tǒng)一日志系統(tǒng)的日志和路標的可視化该酗。用于導(dǎo)入日志存檔文件的默認模板
Metal System Trace:是apple 2014年在ios平臺上推出的高效底層的3D圖形API券册,它通過減少驅(qū)動層的API調(diào)用CPU的消耗提高渲染效率。
Network:使用連接工具來分析iOS應(yīng)用程序的TCP/IP和UDP/IP連接
SceneKit:檢測的app是使用了screenKit垂涯。用于確定每一幀的工作類型烁焙,例如動畫、物理耕赘、場景剔除和渲染骄蝇。
SwiftUI:SwiftUI分析工具,用于跟蹤視圖類型的 .body 調(diào)用操骡、動態(tài)視圖屬性隨時間的更新以及識別慢幀
System Trace:操作系統(tǒng)中事件發(fā)生的全視圖九火。了解線程是如何跨 CPU 調(diào)度的,并了解系統(tǒng)調(diào)用和虛擬內(nèi)存故障如何影響應(yīng)用程序的性能
Time Profiler:使用時間分析器工具對系統(tǒng)CPU上運行的進程執(zhí)行低開銷册招、基于時間的采樣岔激。隨著時間的推移,多核和線程的使用效率越高是掰,應(yīng)用程序的性能就越好虑鼎。時間分析器工具中的CPU和線程策略顯示了應(yīng)用程序?qū)?nèi)核和線程的利用程度。
Zombies:使用分配工具來測量應(yīng)用程序中的一般內(nèi)存使用情況键痛,重點是檢測過度釋放的“zombie”對象炫彩,即在釋放后調(diào)用的對象,這些對象不再存在絮短。
其中常用的是以下幾種江兢,后續(xù)會分別介紹如何使用及自定義
Allocation
Animation Hitches
App Launch
Leaks
Network
Time Profiler:
Zombies