偵測快照提交

偵測在裝置端執行的情形,定期收集並評估診斷資料,以判斷是否要產生當機報告 / 快照。

運作方式

每隔幾分鐘,偵測會讀取檢查狀態、評估觸發條件, 並將當機報告檔案提交至 FuchsiaDetect 產品。頻率 系統會在 //src/diagnostics/detect/meta/triage-detect.cml

目前不會讀取檢查以外的診斷狀態。SyslogHas(), KlogHas() 和 BootlogHas() 一律會傳回 false。

啟用當機報告

根據預設,偵測功能會在所有產品和版本中執行,但只會建立或建立檔案 部分版本的當機報告否則會記錄警告: Detect would have filed {},其中 {} 會替換為快照簽章。

偵測以下項目僅會產生當機報告: "//src/diagnostics/detect:enable-report-filing"已包含在 --with-base

當機報告只會在某些建構設定中傳送至伺服器,或者 已明確啟用,如當機回報中所述。

快照觸發條件

快照觸發條件存放在 //src/diagnostics/config/triage/detect 目錄內。新增到那個位置的檔案 必須同時將目錄新增至 detect_unconditional_files 中的 //src/diagnostics/config/triage/BUILD.gn

.triage 檔案為標準的 Triage 格式。偵測功能會新增一個 act 類型:

    snapshot_action: {
        type: "Snapshot",
        trigger: "something > something_else",
        repeat: "Hours(6)",
        signature: "a-string-with-restrictions",
    }
  • 就像 Warning 類型動作一樣, Triage-lib 會評估 trigger
  • 如果條件持續,repeat 會在重新編譯前,提供最短延遲時間。 或是重複執行的時間可使用 Days()Hours()Minutes()。如果 repeat的值小於後者的 MINIMUM_SIGNATURE_INTERVAL_NANOS 而系統會記錄警告訊息。
  • signature」會回報在當機報告中。
    • fuchsia-detect- 會加在簽章前面。
    • 簽名只能使用小寫英文字母和連字號 (無空格或底線)。不限字元 這個集合以外的值會小寫,或者轉換為連字號和錯誤 記錄。
    • 多個快照動作可能會使用相同的簽章。已提交當機報告 都是相同的將套用repeat節流 每個特徵而非按動作劃分,並使用

條件式檔案納入

偵測設定檔只能納入部分建構作業中,或者 很少直接解答該如何打造產品您可以在 //src/diagnostics/config/triage/BUILD.gn 中執行以下操作:

  1. 將檔案新增至「detect_conditional_files」 較 detect_unconditional_files
  2. 建立新的 config_data() 項目;按照慣例 與檔案名稱相同
  3. 正在將目標新增至適當群組,以便納入檔案 與任何需要分析的元件

請參閱這裡的範例

詳細規定

如果您要在電腦上使用偵測偵錯功能,請參閱本節說明。

repeat 其實是 Triage eval 運算式,例如 trigger,且可以是 並以「檢查」資料動態計算運算式必須得出 奈秒的整數值。

「偵測」診斷資料的檢查頻率是由 已設定 --check-every 的指令列參數 //src/diagnostics/detect/meta/triage-detect.cml。(這個運算式必須 只能包含常數)。

偵測功能內建時間延遲限制;就會發生錯誤 --check-every小於 MINIMUM_CHECK_TIME_NANOS,將會 請至少延遲 MINIMUM_SIGNATURE_INTERVAL_NANOS 重新剖析快照。 只要新增 --test-only 指令列引數,即可覆寫這些限制。