自 2025 年 3 月 27 日起,我们建议您使用 android-latest-release
而非 aosp-main
构建 AOSP 并为其做出贡献。如需了解详情,请参阅 AOSP 的变更。
消毒用品
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
排错程序是一组动态分析工具,可通过编译器插入的其他插桩,在运行时发现程序中的错误。这包括检测内存安全问题。Android 支持并强烈建议使用以下排错程序:
硬件辅助的 AddressSanitizer (HWASan)
HWASan 是用于检测内存安全问题的主要排错程序。它需要使用 ARM64,可以检测:
- 堆栈和堆缓冲区上溢或下溢
- 释放之后的堆使用情况
- 超出范围的堆栈使用情况
- 返回之后的堆栈使用情况
- 重复释放或错误释放
Address Sanitizer (ASan)
ASan 是一款类似于 HWASan 的工具。它支持更多平台,但不支持 Android。
HWAddress Sanitizer (KASan)
KASan 是上述用户空间工具的内核版本。它采用相同的编译器实现。KASAN 和 ASan/HWASan 互为补充,因为其中一个工具适用于内核,另一个工具适用于用户空间。
我们建议同时启用这两者,以减少 build 配置数量,并减小测试矩阵。
UndefinedBehavior Sanitizer (UBSan)
UBSan 会执行编译时插桩,以检查各种类型的(对内存来说不安全)未定义行为。这包括有符号和无符号整数溢出检查 (IntSan)、对固定大小数组的边界检查 (BoundsSan),以及许多其他类型的未定义行为。IntSan 和 BoundsSan 还非常适合在生产环境中启用,作为安全缓解措施。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-03-26。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-03-26。"],[],[]]