7

我不知道如何在使用 CLion 的 MacOS Big Sur 上使用 CLion 来查看内存泄漏,我已经尝试过这些事情:

  1. Valgrind - 与 Big Sur 不兼容

  2. 来自 Clang 的 Leak Sanitizer - 根据 CLion 的支持人员的说法,这显然与 MacOS 不兼容

  3. 在 CLion 中,我在 CMakeLists.txt 中编写了以下命令:

       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -g")
    

    然后我在地址消毒剂部分的首选项菜单->消毒剂中写了:

       detect_stack_use_after_return=1
    

    根据 CLion 支持页面,他们说 Leak Sanitizer 包含在 Address sanitizer 中。

4

3 回答 3

0

通常您可以libasan在编译期间使用 ( https://www.osc.edu/resources/getting_started/howto/howto_use_address_sanitizer ) 但是在 MacOS 上还有一些额外的步骤:

https://clang.llvm.org/docs/AddressSanitizer.html(在此页面搜索“MacOS”以获得概述):

内存泄漏检测

有关 AddressSanitizer 中泄漏检测器的更多信息,请参阅 LeakSanitizer。泄漏检测在 Linux 上默认打开,并且可以在 macOS 上使用 ASAN_OPTIONS=detect_leaks=1 启用;但是,其他平台尚不支持它。

来源:https ://clang.llvm.org/docs/AddressSanitizer.html

另请参阅Mac OS:Leaks Sanitizerhttps://developer.apple.com/documentation/xcode/diagnosing_memory_thread_and_crash_issues_early

于 2021-03-12T12:21:51.383 回答
0

在偏好 | 构建、执行、部署 | CMake -> Cmake 选项使用

-DCMAKE_BUILD_TYPE=ASAN -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++

在此处输入图像描述

于 2021-10-20T15:54:42.593 回答
0

假设您已安装 xcode 命令行开发人员工具,请在 CLion 中打开一个终端窗口并尝试以下命令,其中 programname您正在构建的程序的名称:

leaks -atExit -- cmake-build-debug/programname

你得到这样的输出:

leaks Report Version: 4.0
Process 69522: 214 nodes malloced for 21 KB
Process 69522: 1 leak for 1008 total leaked bytes.

    1 (1008 bytes) ROOT LEAK: 0x14c6067f0 [1008]
于 2021-07-28T01:22:27.277 回答