LLVM TSAN / ASAN

对于多线程和底层不安全接口的服务器代码,使用 LLVM 的 ThreadSanitizerAddressSanitizer 的能力可以帮助排查无效的线程使用和无效的内存使用/访问问题。

有一篇博客文章概述了 TSAN 的用法。

简而言之,可以使用 swiftc 命令行选项 -sanitize=address-sanitize=thread 分别用于这两个工具。

此外,对于 Swift Package Manager 项目,您可以在命令行中使用 --sanitize,例如:

swift build --sanitize=address

swift build --sanitize=thread

它也可以用于测试。

swift test --sanitize=address

swift test --sanitize=thread