彩票走势图

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

翻译|使用教程|编辑:董玉霞|2022-06-17 10:49:14.253|阅读 1606 次

概述:本文介绍了在 CLion中利用Sanitizer进行编译器检测配置项目的相关教程内容。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

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

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

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

对于动态代码分析, 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技术交流QQ群:786598704      欢迎进群一起讨论


    标签:

    本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


    为你推荐

    • 推荐视频
    • 推荐活动
    • 推荐产品
    • 推荐文章
    • 慧都慧问
    相关产品
    CLion

    CLion是一款专为开发C及C++所设计的跨平台IDE。

    IntelliJ IDEA

    IntelliJ在业界被公认为优秀的Java开发平台之一,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面表现突出,并支持基于Android平台的程序开发。

    WebStorm

    深受广大程序员喜爱的JavaScript 开发和Web前端开发神器。

    扫码咨询


    添加微信 立即咨询

    电话咨询

    客服热线
    023-68661681

    TOP