使用 Winscope 擷取追蹤記錄

在本機執行 Winscope,或透過網路伺服器存取 Winscope。

您可以使用 Winscope 擷取追蹤記錄,用於本機開發和偵錯。Winscope 使用 adb,可透過 USB 或 Wi-Fi 連線至裝置。

啟動 Winscope 時,畫面上會顯示「Collect Traces」畫面。

裝置連線

您可以使用 Winscope ProxyWeb Device Proxy,在 Winscope 中連線裝置。根據預設,Winscope 首頁會顯示 Winscope Proxy 連線設定 UI。

如要開始擷取追蹤記錄,請選擇下列任一裝置連線機制。

Winscope Proxy 設定

請按照下列步驟設定 Winscope Proxy:

  1. 在首頁的「Collect Traces」下方,在「Select connection type」下拉式選單中選擇「Winscope Proxy」

    使用 Winscope Proxy 擷取追蹤記錄

    圖 1. 使用 Winscope Proxy 擷取追蹤記錄。

  2. 執行下列指令,啟動 Winscope ADB Connect Proxy,直接透過瀏覽器擷取追蹤記錄:

    python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
    
  3. 請注意執行後在終端機上顯示的 Winscope 代理程式權杖。

  4. 啟動 Winscope ADB Connect proxy 後,畫面會變更如下所示。如要建立與 Proxy 的初始連線,請輸入步驟 3 中的 Winscope Proxy 權杖,然後按一下「Connect」

    連線至 Winscope Proxy

    圖 2. 連線至 Winscope Proxy。

網路裝置 Proxy 設定

請按照下列步驟設定 Web Device Proxy:

  1. 在首頁的「收集追蹤記錄」下方,從「選取連線類型」下拉式選單中選擇「Web Device Proxy」

    使用 Web Device Proxy 擷取追蹤記錄

    圖 3. 使用 Web Device Proxy 擷取追蹤記錄。

  2. 如果電腦上沒有 Web Device Proxy 守護程序,請按一下「Install」或執行安裝程式

  3. 透過對話方塊核准 Web Device Proxy 的來源存取權。

    授權原始 WDP 存取權

    圖 4. 授權來源。

  4. 首次連結新裝置時,請核准該裝置的存取權。如果對話方塊未自動顯示,請按一下裝置旁的 lock_open 圖示:

    wdp_unauth_device

    圖 5. 授權裝置。

追蹤項目

請按照下列步驟收集追蹤記錄:

  1. 連線後,請選取目標並設定設定,以啟動擷取程序。然後按一下「Start trace」開始擷取:

    在 Winscope 中收集追蹤記錄

    圖 6. 在 Winscope 中收集追蹤記錄。

  2. 如要停止擷取,請按一下「End trace」

    在 Winscope 中結束追蹤

    圖 7. 在 Winscope 中結束追蹤。

追蹤選項

本節將說明每種追蹤類型的選項。

錄製螢幕畫面

您可以使用 Winscope 錄製多個螢幕畫面。從選單中選擇要錄製的螢幕畫面。如果您未選取,Winscope 預設會記錄有效的顯示畫面。

SurfaceFlinger

  • 緩衝區大小:調整 SurfaceFlinger 追蹤記錄的內部環形緩衝區大小。緩衝區越大,可收集的資料就越多,但記憶體用量也會增加。

  • 輸入:如果途徑包含輸入資料,則會追蹤輸入視窗的詳細資料。

  • 組合:追蹤組合類型和可見區域。

  • 中繼資料:追蹤其他途徑中繼資料,包括畫面外圖層。

  • HWC:追蹤其他非結構化的硬體 Composer 中繼資料。

  • 追蹤緩衝區:設定 SurfaceFlinger 追蹤介面上的所有緩衝區變更。根據預設,SurfaceFlinger 只會在幾何圖形變更時追蹤新狀態。

  • 虛擬顯示器:追蹤記錄中包含虛擬顯示器圖層。

WindowManager

  • 緩衝區大小:調整 WindowManager 追蹤記錄的記憶體內環形緩衝區大小。緩衝區越大,可收集的資料就越多,但記憶體用量也會增加。
  • 追蹤類型:定義收集狀態的頻率選項:

    • frame:在這個模式中,WindowManager 會為每個影格轉儲單一狀態,確保只擷取有效的 WindowManager 狀態。這個模式的效能負載最低。
    • transaction:每當交易完成時,這個模式都會記錄 WindowManager 狀態。您可以在一個影格內提交多個交易,這樣就能在影格期間偵錯中間的 WindowManager 狀態。不過,與影格模式相比,此模式的效能負擔較高。
  • 追蹤層級:決定 WindowManager 追蹤記錄的詳細程度:

    • 詳細資訊:包含所有視窗和每個視窗的設定資訊。這個模式的記憶體和效能負擔最高。
    • debug:包含所有視窗的資訊,但只記錄視窗設定 (如果包含要求的覆寫設定)。
    • critical:包含與「偵錯」模式相同的資訊,但只包含可見的視窗。這個模式的記憶體和效能負載最小。

傾倒

如要使用 Winscope 擷取狀態快照,請在首頁的「Collect Traces」下方選取「Dump」分頁,然後按一下「Dump state」

在 Winscope 中傾印狀態

圖 8. 在 Winscope 中傾印狀態。

螢幕截圖設定

Winscope 可讓您擷取多個螢幕畫面。從選單中選擇要截圖的螢幕。如果未選取任何畫面,系統會為目前顯示的畫面收集螢幕截圖。