C/C++开发工具CLion动态代码分析教程(一):Google sanitizers

动态代码分析是一种在应用程序执行期间分析应用程序的方法。这种方法有助于暴露只能在运行时发现的漏洞和错误,例如内存泄漏、未初始化的访问、并发问题、未定义的行为情况等等。

使用动态分析时,请记住:

  • 动态分析工具可能会导致应用程序性能下降,
  • 动态测试只发现实际执行代码中的缺陷,因此应单独解决全覆盖问题。

对于动态代码分析, CLion集成了Valgrind Memcheck、Google Sanitizers、CPU Profiler和Code Coverage工具,为它们提供可视化输出和方便的功能,帮助您处理结果。

Google sanitizers

Sanitizers是由 Google 设计的用于动态代码分析的开源工具。CLion 与以下 Sanitizer 集成:

  • AddressSanitizer (ASan)
  • LeakSanitizer (LSan)
  • ThreadSanitizer (TSan)
  • UndefinedBehaviorSanitizer (UBSsan)
  • MemorySanitizer (MSan)

跨平台C/C++开发软件CLion使用教程。

由于Sanitizers基于编译器检测,您需要重新构建项目才能开始使用这些工具。

配置Sanitizers
指定编译器标志
  • 调整以下模板行并将其添加到您的CMakeLists.txt:
  • 用于[sanitizer_name]以下其中一项:

    • AddressSanitizer 的地址
    • LeakSanitizer泄漏
    • ThreadSanitizer 的线程
    • undefinedBehaviorSanitizer的未定义
    • MemorySanitizer 的内存

    [Additional_flags]是其他编译标志,例如-fno-omit-frame-pointer, fsanitize-recover/fno-sanitize-recover,-fsanitize-blacklist等。

    用于[-g]在警告消息中包含文件名和行 。

    添加优化级别[-OX]以获得合理的性能。

非 CMake 项目的Sanitizers
  • 如果您正在使用Makefile 项目或具有自定义构建目标的编译数据库项目,请确保指定链接器标志以及编译器标志。例如,在 Makefile 和AddressSanitizer的情况下:
  • 跨平台C/C++开发软件CLion使用教程。

    Sanitizers 的输出可视化仅适用于 CMake 项目。对于 Makefile 和编译数据库,输出以纯文本形式记录到控制台。

    调整Sanitizers设置
    • 转到设置/首选项 | 构建、执行、部署 | 动态分析工具| 消毒剂并设置以下内容:
    • 跨平台C/C++开发软件CLion使用教程。
    • 运行时标志
    • 在本节中,指定每个 Sanitizer 的运行时选项。您可以手动执行此操作,也可以单击从现有环境变量中导入标志按钮(如果存在变量,则此按钮可用ASAN/MSAN/LSAN/TSAN_OPTIONS)。

    • 对 Sanitizer 的输出使用视觉表示
    • 跨平台C/C++开发软件CLion使用教程。

      要使可视化输出可用,请切换到至少 3.8.0 的 Clang 或至少 5.0.0 的 GCC

      当清除此复选框或编译器不符合要求时,sanitizers 输出以纯文本形式显示:

      跨平台C/C++开发软件CLion使用教程。
    提供 llvm-symbolizer 的路径
    • 为了让 Sanitizer 将地址转换为源代码位置并使堆栈跟踪易于理解,请确保PATH或*SAN_SYMBOLIZER_PATH环境变量包含llvm-symbolizer的位置。
    • 注意PATH应该指向llvm-symbolizer的目录(例如/usr /bin/),而*SAN_SYMBOLIZER_PATH应该指向特定的二进制文件(例如/usr /dir /llvm-symbolizer)。

      如果使用 Clang 编译器,如果PATH或*SAN_SYMBOLIZER_PATH变量都没有指向llvm-symbolizer,您将收到来自 CLion 的通知:

      跨平台C/C++开发软件CLion使用教程。

    以上就是在 CLion中利用Sanitizer进行编译器检测配置项目的相关教程内容,更多关于CLion使用教程的内容可进入官 查看。

    CLion| 下载试用

    CLion是一款专为开发C及C++所设计的跨平台IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。

    CLion技术交流

    标签:

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年5月13日
    下一篇 2022年5月13日

    相关推荐

    发表回复

    登录后才能评论