消毒殺菌劑

清理器是一組動態分析工具,可透過編譯器插入的額外檢測功能,在執行階段找出程式中的錯誤。包括偵測記憶體安全性問題。Android 支援並強烈建議使用下列清理工具:

Hardware-assisted AddressSanitizer (HWASan)

HWASan 是主要的清理工具,可偵測記憶體安全性問題。這項功能需要 ARM64,且可偵測:

  • 堆疊和堆積緩衝區溢位或反向溢位
  • 釋放後的堆積使用情況
  • 範圍後的堆疊使用情形
  • 傳回後堆疊的使用情況
  • 重複釋放或錯誤釋放

Address Sanitizer (ASan)

ASan 是一款與 HWASan 相似的工具。這項功能適用於更多平台,但不支援 Android。

KernelAddress Sanitizer (KASan)

KASan 是上述使用者空間工具的核心對應項目。它共用相同的編譯器實作項目。KASan 和 ASan/HWASan 是互補工具,前者適用於核心,後者適用於使用者空間。建議您同時啟用這兩項功能,以減少建構設定數量和測試矩陣。

UndefinedBehavior 消毒器 (UBSan)

UBSan 會執行編譯時間檢測作業,檢查各種未定義的行為 (非記憶體安全性)。這包括帶正負號和不帶正負號的整數溢位檢查 (IntSan)、靜態大小陣列的邊界檢查 (BoundsSan),以及許多其他類型的未定義行為。在正式版中啟用 IntSan 和 BoundsSan 也是因應安全性問題的有效措施。