KN 构建速度体检
profile构建耗时方式 KN构建过程中的任务份三个维度: gradle task:最粗的维度,其中 compileKotlin 是调 konan 前端的gradle任务,linkDebugSharedOhosArm64/linkPodDebugFrameworkIosArm64 是调 konan 后端的gradle任务 konan phase:konan执行过程中内部的步骤,...
profile构建耗时方式 KN构建过程中的任务份三个维度: gradle task:最粗的维度,其中 compileKotlin 是调 konan 前端的gradle任务,linkDebugSharedOhosArm64/linkPodDebugFrameworkIosArm64 是调 konan 后端的gradle任务 konan phase:konan执行过程中内部的步骤,...
本文探讨 C/C++ 程序编译链接过程中符号的三个关键属性:LLVM IR Linkage(编译器层面)、ELF Bind(静态链接)和 ELF Visibility(动态链接)。通过完整的代码示例,演示了 external、static、weak、hidden、protected、TLS、inline、template 等各种链接类型,并展示对应的 LLVM IR 和 llvm-readelf 输出。重点阐述了 Bind 决定多个 .o 文件链接时哪个定义胜出,Vis 决定 .so 加载后符号能否被其他库访问或覆盖。适合想深入理解符号可见性和链接行为的开发者。
dwarf中代码文件路径是打包时机器上的绝对路径 这会导致调试时需要设很多mapping才能让流水上打包产物中的文件路径和本地的路径匹配上 -Xdebug-prefix-map 用法:-Xdebug-prefix-map=/real/path/prefix/=/virtal/unified/prefix 这个选项在后端生效,只需要在顶层出so的gradle子项目中配,在出kl...
探索 Kotlin/Native 代码覆盖率实现方案,对比 Kotlin IR 插桩与 LLVM gcov 两种技术路线,详细介绍基于 LLVM gcov 的覆盖率检测实现,包括编译插桩、运行时集成、覆盖率解析工具(llvm-cov、gcovr、lcov)的使用方法。
使用 Kotlin Native 项目的构建脚本编译 LLVM。包含 Mac Arm 和 Linux 平台的两阶段构建流程,涵盖 LLVM 12 (OpenHarmony master-llvm12-backup 分支) 和 LLVM 19 版本,以及多 Xcode 环境适配、增量构建、Debug 版本配置等技巧。
环境隔离 开启远程登陆功能,创建用户,设置密码 sudo sysadminctl -addUser <username> -password - 通过ssh key登陆 ssh-keygen -t ed25519 -C "ur email" ssh-copy-id -i ~/.ssh/xxx.pub -p 10010 username@ip # 在本地的 ...
Kotlin Native 中使用地址消毒工具检测内存安全问题。介绍 ASAN、HWASAN、MemDebug、GWP-ASan 的原理与开销,分析 KN 与 C 混合场景下的故障模式,涵盖堆栈溢出、use-after-free、double-free 等异常类型的检测方法。
Gradle / IDEA 相关 IDEA中配置并发下载依赖加速sync 运行具体任务 反复调试同一个位置的修改时,触发更小范围的构建在低配电脑上通常速度比较快。一般的kn编译器开发不太改kgp及其他组件,这些产物可以都用线上的,只出 kotlin-native/dist目录下的kn编译器产物进行开发。这种模式下不需要修改maven仓库添加本地的build/repo,不需要修改kot...
-Xtemporary-files-dir:将类似out.bc这种编译过程中的临时文件写到一个指定路径,这样文件不在tmp下,编译完成后会保留,方便查看。如 -Xtemporary-files-dir=${project.buildDir.resolve("tmpfile").absolutePath}
介绍KMP(Kotlin Multiplatform)项目中优化鸿蒙Debug构建效率的实用方法,包括排查Gradle任务,开启增量缓存机制,常见问题及解决方案。通过静态缓存和依赖优化,显著提升Debug构建速度,提升开发效率。