CPF · KMP&CMP-Gradle插件用户手册
暂未自动定位到与本项直接相关的段落,请打开原文检索。
全部配置 / KN-BINARY-SANITIZER
Xbinary=sanitizer · KN-BINARY-SANITIZER · 编译器参数(Native)
默认值:默认关。未指定则不启用 sanitizer。使用场合:场景可配。Debug 排障。
用途。启用 Address/Thread 等 sanitizer,放大内存类错误以便排障。社区侧按产物形态(static library / static framework)与目标 supportedSanitizers 校验;勿带入 Release 性能基线。示例取值:`sanitizer=address`(address / thread 等;勿进 Release)。
影响。性能/包体开销;静态库等可能不支持(KonanConfig警告)。
适用场景。Debug 排障:怀疑内存破坏 / 数据竞争时临时开启;确认后关闭,勿写入 Release 默认模板。
约束与联动。相对上游:放宽了 sanitizer 种类限制。上游曾对非 thread 种类直接警告「not supported yet」并忽略;社区侧改为主要按产物形态(static library / static framework)以及目标是否在 supportedSanitizers 中来校验。 静态库等产物形态可能不支持;排障用完即关,勿进 Release 默认配置。
| 可写取值 | 含义 | 使用场景 |
|---|---|---|
address | Address Sanitizer(ASan),放大非法内存访问以便排障 | Debug 排查 use-after-free / 越界等;勿作 Release 默认;部分产物形态可能不支持 |
thread | Thread Sanitizer(TSan),检测数据竞争等线程问题 | 并发问题排障;开销大,用完关闭 |
hwaddress | Hardware Address Sanitizer(HWASan) | 目标/工具链支持 HWASan 时的内存排障;需确认平台可用性 |
含义/场景依据:SanitizerKind.ADDRESS;upstream-modified 说明 / sanitizer 详情约定; SanitizerKind.THREAD; SanitizerKind.HWADDRESS
定义依据:konan/BinaryOptions.kt 在仓库中打开; target/Sanitizer.kt 在仓库中打开
// 文件:build.gradle.kts(应用的 Kotlin 模块,例如 composeApp)
kotlin {
ohosArm64 { // 按实际 native target 调整
binaries.all {
freeCompilerArgs += "-Xbinary=sanitizer=address" // address / thread 等;勿进 Release
}
}
}
不写这个配置时,编译器会怎么处理?
此选项默认关闭,不设置时不生效。需要时显式开启。
未指定则不启用 sanitizer。
以下摘抄原文中与本配置最相关的段落,便于速读;完整上下文请点原文。
暂未自动定位到与本项直接相关的段落,请打开原文检索。