Trình dọn dẹp là một nhóm các công cụ phân tích động giúp tìm lỗi trong các chương trình trong thời gian chạy thông qua các công cụ đo lường bổ sung do trình biên dịch chèn vào. Điều này bao gồm cả việc phát hiện các vấn đề về an toàn bộ nhớ. Android hỗ trợ và khuyên bạn nên sử dụng các trình dọn dẹp sau:
AddressSanitizer được hỗ trợ phần cứng (HWASan)
HWASan là trình dọn dẹp chính để phát hiện các vấn đề về an toàn bộ nhớ. API này yêu cầu ARM64 và có thể phát hiện:
- Chặn tràn (overflow) hoặc chặn trống (underflow) cho ngăn xếp (stack) và bộ nhớ khối xếp (heap)
- Sử dụng bộ nhớ khối xếp sau khi giải phóng
- Sử dụng ngăn xếp sau phạm vi
- Sử dụng ngăn xếp sau khi trả về
- Giải phóng hai lần hoặc giải phóng bộ nhớ chưa được cấp phát trước đó
Trình dọn dẹp địa chỉ (ASan)
ASan là một công cụ tương tự như HWASan. API này hoạt động trên nhiều nền tảng hơn nhưng không được hỗ trợ trên Android.
Trình dọn dẹp KernelAddress (KASan)
KASan là phần tương ứng của hạt nhân với các công cụ không gian người dùng ở trên. Phương thức này có cùng cách triển khai trình biên dịch. KASan và ASan/HWASan bổ sung cho nhau vì một công cụ áp dụng cho nhân và một công cụ khác áp dụng cho không gian người dùng. Bạn nên bật cả hai cùng một lúc để giảm số lượng cấu hình bản dựng và giảm ma trận kiểm thử.
Trình dọn dẹp UndefinedBehavior (UBSan)
UBSan thực hiện đo lường thời gian biên dịch để kiểm tra nhiều loại hành vi không xác định (không an toàn về bộ nhớ). Bao gồm cả việc kiểm tra tràn số nguyên đã ký và chưa ký (IntSan), kiểm tra giới hạn cho các mảng có kích thước tĩnh (BoundsSan) và nhiều loại hành vi không xác định khác. IntSan và BoundsSan cũng phù hợp để bật trong bản phát hành chính thức như một biện pháp giảm thiểu bảo mật.