日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>MTHawkeye iOS分析/調(diào)試輔助工具

MTHawkeye iOS分析/調(diào)試輔助工具

2022-06-16 | zip | 19.56 MB | 次下載 | 2積分

資料介紹

授權(quán)協(xié)議 MIT
開發(fā)語言 C/C++ Objective-C
軟件類型 開源軟件

軟件簡介

MTHawkeye 是 iOS 下的調(diào)試優(yōu)化輔助工具集,旨在幫助 iOS 開發(fā)者提升開發(fā)效率、輔助優(yōu)化性能體驗。

在產(chǎn)品開發(fā)周期內(nèi),引入 MTHawkeye 來幫助你更快地發(fā)現(xiàn)、查找、分析、定位、解決問題:

  • 開發(fā)階段,側(cè)重于開發(fā)調(diào)試輔助,及時偵測問題,并在必要時提示開發(fā)者及時處理
  • 測試階段,側(cè)重于根據(jù)測試場景,收集盡可能多的數(shù)據(jù),用于自動化測試分析報告
  • 線上階段,側(cè)重補充傳統(tǒng) APM 組件缺失,但自身業(yè)務(wù)需要收集的一些性能數(shù)據(jù)

MTHawkeye 內(nèi)置了一些常用的性能偵測相關(guān)插件,也引入并改進了 FLEX 作為調(diào)試輔助的一個插件,應(yīng)用接入 MTHawkeye 時可自定義增改自己需要的插件。

以下為一些內(nèi)置插件的 demo 演示圖,分別用于查看主線程耗時方法查看 App 內(nèi)存分配詳情,查看網(wǎng)絡(luò)請求詳情記錄。更多插件及說明見后文。

????

0x00 功能簡介

MTHawkeye 簡單可分為上中下三層,除了最下面的基礎(chǔ)層外,中間為UI 基礎(chǔ)層,最上層的各個插件內(nèi)部根據(jù)不同場景做了職責(zé)拆分,應(yīng)用可根據(jù)自己的需要接入。整體結(jié)構(gòu)如下:
poYBAGKoB8eAMmrgAADYCyq9jd4748.png

基礎(chǔ)功能

基礎(chǔ)層主要提供了插件管理能力,存儲能力和一些基礎(chǔ)工具類。?UI基礎(chǔ)層?則提供了開發(fā)、測試階段使用的界面交互框架,包含了懸浮窗、主界面框架和設(shè)置面板,插件可以集成到其中。

內(nèi)置的可選插件

內(nèi)置的插件根據(jù)關(guān)注點分成了?Memory,?TimeConsuming,?Energy,?Network,?Graphics,?Storage,?Utility?幾個類別。

Memory

#?LivingObjectSniffer

LivingObjectSniffer?主要用于跟蹤觀察 ViewController 直接或間接持有的對象,以及自定義 View 對象,偵測他們是否異常存活,比如內(nèi)存泄露、未及時釋放或者不必要的內(nèi)存緩存。

在開發(fā)、測試階段,偵測到的異常情況可以以浮窗警告、Toast 的形式提示開發(fā)、測試人員。自動化測試時也可以直接提取記錄的存活對象做進一步的分析判斷。

#?Allocations

Allocations?類同于 Instrument 的 Allocations 功能,跟蹤應(yīng)用實際分配的內(nèi)存詳情,在應(yīng)用內(nèi)存使用異常(異常上升、OOM 退出)時可以通過記錄的內(nèi)存使用詳情數(shù)據(jù),來排查內(nèi)存使用問題。

TimeConsuming

#?UITimeProfiler

UITimeProfiler?用于輔助主線程耗時任務(wù)的優(yōu)化。

數(shù)據(jù)采集部分主要包含 VC Life Trace 和 ObjC CallTrace 兩個組件。VC Life Trace 用于跟蹤 ViewController 打開各個階段的具體時間點,ObjC CallTrace在開啟后,則可跟蹤耗時大于指定閾值的 Objective-C 方法。

界面層部分將兩部分的數(shù)據(jù)合并展示,便于開發(fā)者更便捷的找出關(guān)注流程的耗時信息。示例圖如前文的動圖,更詳細的說明見插件說明文檔。

自動化測試、線上階段接入后,無需埋點或插入其他代碼,即可持續(xù)的跟蹤啟動耗時、頁面打開耗時和其他關(guān)鍵流程耗時。

#?ANRTrace

ANRTrace?用于捕獲卡頓事件,同時采樣卡頓發(fā)生時的主線程調(diào)用棧。

#?FPSTrace

FPSTrace?用于跟蹤界面 FPS 以及 OpenGL 刷新繪制 FPS,并在浮窗上顯示當前值。

Energy

#?CPUTrace

CPUTrace?用于跟蹤 CPU 持續(xù)高使用率,同時記錄高使用率期間主要調(diào)用了哪些方法。

#?BackgroundTask Trace

BackgoundTask trace插件將跟蹤UIBackgroundTaskIdentifier的開始/結(jié)束,在嘗試查找崩潰0xbada5e47的原因時將很有用。 (直接參見使用代碼)

Network

#?NetworkMonitor

NetworkMonitor?監(jiān)聽記錄 App 內(nèi) HTTP(S) 網(wǎng)絡(luò)請求的各個階段耗時,并提供內(nèi)置的記錄查看界面,便于開發(fā)者排查優(yōu)化網(wǎng)絡(luò)問題。

  1. 繼承 FLEX 的網(wǎng)絡(luò)請求記錄,過濾搜索裸機價。同時優(yōu)化了監(jiān)聽初始化邏輯,大幅減少對啟動時間的影響
  2. 針對 iOS 9 后的 NSURLSession 的請求,增加記錄 URLSessionTaskMetrics 方便查看請求各個階段的時間
  3. 基于 URLSessionTaskMetrics 增加類似 Chrome 網(wǎng)絡(luò)調(diào)試的 waterfall 視圖,方便查看網(wǎng)絡(luò)請求的隊列和并發(fā)情況
  4. 增加重復(fù)網(wǎng)絡(luò)請求的偵測
  5. 增強搜索欄,支持多條件搜索(域名篩選、重復(fù)請求、url 過濾、status 過濾)
  6. 記錄展示完整的網(wǎng)絡(luò)請求記錄(增加 request headers, request body, response body 記錄)

#?NetworkInspect

NetworkInspect?插件基于 Network Monitor,根據(jù)記錄的網(wǎng)絡(luò)請求實際情況,偵測是否有可改進優(yōu)化的項,上層可以自定義自己的規(guī)則。

Graphics

#?OpenGLTrace

OpengGLTrace?用于跟蹤 OpenGL 資源內(nèi)存占用情況,輔助發(fā)現(xiàn) OpenGL API 錯誤調(diào)用、異常參數(shù)傳遞。

Storage

#?DirectoryWatcher

DirectoryWatcher?主要用于沙盒文件夾的大小跟蹤,便于開發(fā)測試過程中發(fā)現(xiàn)異常的文件管理問題。同時也集成了 FLEX 的沙盒文件查看。

Utility

#?FLEX

MTHawkeye 插件擴展支持了沙盒文件的 AirDrop 功能。

桌面擴展

如果需要將插件擴展到桌面端,如在桌面上查看處理插件收集到的信息,可基于各插件提供的接口獲取數(shù)據(jù),然后橋接到第三方桌面端提供的協(xié)議。如

0x01 接入

開發(fā)階段接入

首先,以 pod 的形式,在項目 podfile 文件中加入 MTHawkeye 引用:

  #< Only used during Debug
  #< Since the podfile dependency doesn't support environment configuration, 
  #< the dependent pods also need to be explicitly configured as Debug.
  
  def hawkeye
    pod 'MTHawkeye', :configurations => 'Debug'

    pod 'FLEX', :configurations => ['Debug']
    pod 'FBRetainCycleDetector', :configurations => ['Debug']
    pod 'fishhook', :configurations => ['Debug']
    pod 'CocoaLumberjack', 
    '3.6.0', :configurations => ['Debug'] # CocoaLumberjack is optional, change to `MTHawkeye/DefaultPluginsWithoutLog` if don't need.
    # pod 'MTGLDebug', :configurations => ['Debug'] # MTGLDebug is exclude by default, change `MTHawkeye` to `MTHawkeye/DefaultPlugins` to include.

    pod 'MTAppenderFile', :configurations => ['Debug']
  end

  target "YourProject" do
    hawkeye

    # ...
  end

注意:CocoaLumberjack這個依賴庫需要使用<~3.6.0版本。 然后,在應(yīng)用啟動時開啟 MTHawkeye 服務(wù)??梢允褂媚J集成的所有插件,或者選擇自己需要的插件啟動。

A: 快速集成默認的所有插件:

#ifdef DEBUG
  #import <MTHawkeye/MTRunHawkeyeInOneLine.h>
#endif

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef DEBUG
  [MTRunHawkeyeInOneLine start];
#endif
  // ...
}

B: 選擇需要的插件、插入外部新的插件:

測試、線上階段接入

測試階段時可能有特殊的需求,而線上階段可能不需要保留界面部分的代碼。這個時候你可以根據(jù)工程的需要創(chuàng)建一個新的?podspec, 在 podspec 里引入在測試、線上階段要引入的 MTHawkeye subspec, 然后在 podfile 內(nèi)引入

  pod 'YourOnlineHawkeye', :podspec => 'xxx/yourOwnHawkeyeOnline.podspec', :configurations => 'Release'

然后在初始化內(nèi)根據(jù)自己的需要加載插件,配置插件是否啟動(默認不啟動),如

#ifdef Release
  [MTHawkeyeUserDefaults shared].allocationsTraceOn = YES; // 根據(jù)需要開啟插件、配置插件

  [[MTHawkeyeClient shared]
    setPluginsSetupHandler:^(NSMutableArray<id> *_Nonnull plugins) {
      [plugins addObject:[MTHAllocationsHawkeyeAdaptor new]];

      // add your additional plugins here.
    }
    pluginsCleanHandler:^(NSMutableArray<id> *_Nonnull plugins) {

    }];

  [[MTHawkeyeClient shared] startServer];
#endif

0x02 交互說明

基礎(chǔ)操作說明:

  • 懸浮窗
    • 展示、隱藏懸浮窗:使用三指長按兩秒手勢或者三指左滑手勢
    • 顯示、隱藏懸浮窗插件:進入設(shè)置界面,進入 Floating Window,顯隱插件
  • 進入主面板:點擊浮窗直接查看最近一次查看的面板
  • 設(shè)置界面:進入主面板,點擊標題呼出模塊切換界面,點擊右上角?Setting?進入設(shè)置界面

各插件的界面交互文檔:詳見上文鏈接

0x03 開發(fā)自己的插件

如果有一個模塊在開發(fā)過程中需要避開很多坑,或者開發(fā)過程中調(diào)試/優(yōu)化相關(guān)的日志代碼很多,可以考慮編寫一個調(diào)試輔助組件,然后基于 Hawkeye 基礎(chǔ)框架 API,可將這個組件接入到 Hawkeye 框架中使用,以便統(tǒng)一交互和接口。

如果你關(guān)注的性能指標在自動化測試時無法持續(xù)跟蹤,考慮編寫一個性能分析插件用于抓取性能數(shù)據(jù)。

詳見:MTHawkeye 插件開發(fā)說明文檔

?

調(diào)試 開源 iOS
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
  2. 1.12 MB  |  5次下載  |  免費
  3. 2HT81696H 內(nèi)置升壓的30W立體聲D類音頻功放數(shù)據(jù)手冊
  4. 1.21 MB   |  1次下載  |  免費
  5. 3HTA6863 3W超低噪聲超低功耗單聲道D類音頻功率放大器數(shù)據(jù)手冊
  6. 0.87 MB   |  次下載  |  免費
  7. 4南芯 Southchip SC8802C 充電控制器 規(guī)格書 Datasheet 佰祥電子
  8. 88.16 KB  |  次下載  |  免費
  9. 5矽力杰 Silergy SY7065 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
  10. 910.67 KB  |  次下載  |  免費
  11. 6矽力杰 Silergy SY7066 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
  12. 989.14 KB  |  次下載  |  免費
  13. 7WD6208A產(chǎn)品規(guī)格書
  14. 631.24 KB  |  次下載  |  免費
  15. 8NB685 26 V,12 A,低靜態(tài)電流,大電流 同步降壓變換器數(shù)據(jù)手冊
  16. 1.64 MB   |  次下載  |  2 積分

本月

  1. 1EMC PCB設(shè)計總結(jié)
  2. 0.33 MB   |  12次下載  |  免費
  3. 2PD取電芯片 ECP5702規(guī)格書
  4. 0.88 MB   |  5次下載  |  免費
  5. 3矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
  6. 1.12 MB  |  5次下載  |  免費
  7. 4氮化鎵GaN FET/GaN HEMT 功率驅(qū)動電路選型表
  8. 0.10 MB   |  3次下載  |  免費
  9. 5PD取電芯片,可取5/9/12/15/20V電壓ECP5702數(shù)據(jù)手冊
  10. 0.88 MB   |  3次下載  |  免費
  11. 6SY50655 用于高輸入電壓應(yīng)用的偽固定頻率SSR反激式穩(wěn)壓器英文資料
  12. 1.01 MB   |  3次下載  |  免費
  13. 7怎么為半導(dǎo)體測試儀選擇精密放大器
  14. 0.65 MB   |  2次下載  |  免費
  15. 8SY52341 次級側(cè)同步整流英文手冊
  16. 0.94 MB   |  2次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233095次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191469次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183360次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81606次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73832次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分
普陀区| 于田县| 绿春县| 屏南县| 桦南县| 韶山市| 达日县| 南宫市| 海南省| 英吉沙县| 长岛县| 黄骅市| 从江县| 建平县| 松原市| 德昌县| 陆丰市| 临朐县| 松溪县| 花莲县| 德州市| 修文县| 双江| 蓝田县| 志丹县| 枞阳县| 金秀| 儋州市| 呼伦贝尔市| 韩城市| 石门县| 平顶山市| 贵南县| 桃园县| 浏阳市| 安乡县| 衢州市| 余江县| 石渠县| 栾城县| 洪湖市|