Address Sanitizer: HWASan/ASan
Nhà phát triển nền tảng Android sử dụng HWAddressSanitizer (HWASan) để tìm lỗi bộ nhớ trong C/C++.
Bạn có thể truyền nhanh hình ảnh HWASan tạo sẵn sang các thiết bị Pixel được hỗ trợ từ ci.android.com (hướng dẫn thiết lập chi tiết).
Kể từ Android 8.0 (Oreo), bạn cũng có thể sử dụng ASan để gỡ lỗi ứng dụng trên các thiết bị phát hành chính thức không bị can thiệp vào hệ thống. Bạn có thể tìm hướng dẫn trên ASan wiki.Heapprofd
Android 10 hỗ trợ heapprofd, một trình phân tích vùng nhớ khối xếp lấy mẫu có mức hao tổn thấp. heapprofd cho phép bạn phân bổ mức sử dụng bộ nhớ gốc cho ngăn xếp lệnh gọi trong chương trình. Xem heapprofd – Trình phân tích tài nguyên vùng nhớ Android trên Trang web tài liệu về Perfetto để biết thêm thông tin.
Gỡ lỗi Malloc
Xem phần Gỡ lỗi Malloc và Theo dõi bộ nhớ gốc bằng lệnh gọi lại libc để nắm được nội dung mô tả toàn diện về các tuỳ chọn gỡ lỗi có sẵn cho các vấn đề về bộ nhớ gốc.
có thể truy cập
libmemunReachable của Android là một trình phát hiện rò rỉ bộ nhớ gốc có mức hao tổn tài nguyên gốc. Nó sử dụng một trình thu thập rác đánh dấu và quét rác không chính xác vượt qua mọi bộ nhớ gốc, báo cáo mọi lượt chặn không truy cập được là rò rỉ dữ liệu. Xem tài liệu về libmemunreachable để nắm được hướng dẫn sử dụng.
Hook Malloc
Nếu bạn muốn xây dựng các công cụ của riêng mình, libc của Android cũng hỗ trợ chặn tất cả phân bổ/cuộc gọi miễn phí xảy ra trong quá trình thực thi chương trình. Xem malloc_hooks tài liệu để biết hướng dẫn sử dụng.
Số liệu thống kê về Malloc
Android hỗ trợ các tiện ích mallinfo(3)
và malloc_info(3)
sang <malloc.h>
.
Hàm malloc_info
có trong Android 6.0 (Marshmallow) trở lên và lược đồ XML của hàm này được ghi chép trong <malloc.h>
của Bionic.
Máy chủ theo dõi gỡ lỗi Dalvik
Bạn cũng có thể sử dụng Dalvik Debug Monitor Server (DDMS) để xem đồ hoạ của đầu ra Malloc Debug.
Để sử dụng DDMS, trước tiên hãy bật giao diện người dùng bộ nhớ gốc:
- Mở
~/.android/ddms.cfg
- Thêm dòng:
native=true
Sau khi chạy lại DDMS và chọn một quy trình, bạn có thể chuyển sang thẻ phân bổ gốc mới và điền vào thẻ đó bằng danh sách các lượt phân bổ. Điều này đặc biệt hữu ích khi gỡ lỗi rò rỉ bộ nhớ.