Santizers测试

发布网友 发布时间:2024-09-07 06:52

我来回答

1个回答

热心网友 时间:2024-09-21 13:44

在C++进阶学习中,Google的开源工具Santizers是提升代码质量的利器,它由LLVM项目集成,包含多种子项目,本文主要参考[1]进行介绍。

首先,AddressSanitizer(ASan)在address_sanitizer_test.cpp中展示了其强大的内存检测能力。通过在CMakeLists.txt中添加"-fsanitize=address",编译通过后,ASan的命令行结果清晰地指出数组越界错误,对定位bug非常有帮助。然而,CLion运行时指出的是全局内存溢出警告,而非错误,这需要进一步探究原因。

LeakSanitizer(LSan)可以使用或与ASan配合。通过设置"-fsanitize=leak"或在ASAN_OPTIONS中增加'detect_leaks=1',LSan在leak_sanitizer_test.cpp中检测内存泄漏,Clion运行结果直接显示了内存泄漏信息。

ThreadSanitizer(TSan)专门用于多线程安全检查,如thread_sanitizer_test.cpp中的无锁修改全局变量问题,CMakeLists.txt配置后,Clion的运行结果会揭示多线程错误。

而对于检测未定义行为的UndefinedBehaviorSanitizer(UBSan),其在undefined_behaviour_sanitizer.cpp中有应用,相关CMakeLists.txt配置了检测选项,CLion的结果将揭示潜在的未定义行为。

最后,MemorySanitizer(MSan)对内存使用进行深度检查,memory_sanitizer_test.cpp和CMakeLists.txt中的设置能够帮助找出内存管理的隐患。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com