macOS Mojave 10.14.2是否有Valgrind?有没有其他替代品?

5

好的,我看到有人在4个月前提出了这个问题。但是自从Mojave发布以来已经过去了相当长的时间。有人知道如何让它工作或者可能有任何替代方案,以便我可以检查我的程序是否存在内存泄漏。我是一名学生,所以费用确实很重要,但这是我几门课程的要求。我希望不必使用虚拟机,因为它们在Mac上运行得不太好。任何建议都将是极好的。谢谢。


1
你可以考虑使用诸如地址消毒剂之类的工具,例如Address Sanitizer。这里是Clang的链接:https://clang.llvm.org/docs/AddressSanitizer.html。 - Stanislav Pankevich
支持列表上写着“OS X 10.7 - 10.11 (i386/x86_64)”。而我使用的是10.14.2版本,与前几个版本相比,在文件系统和其他方面都有了很大的变化。 - Tanner Breckenridge
1个回答

2

您有几个选项:

  1. 您可以使用 XCode 进行开发,并在 Profile 模式下运行代码。

  2. 您可以启动 Instruments 并附加到进程。

  3. 您可以运行代码并使用 leaks 确定泄漏大小。

> leaks 2419
Process:         LeakingTheMemory [2419]
Path:            /Users/USER/*/LeakingTheMemory
...
...
...
leaks Report Version: 4.0
Process 2419: 196 nodes malloced for 262162 KB
Process 2419: 26 leaks for 134217760 total leaked bytes.

    26 (128M) << TOTAL >>
      1 (64.0M) ROOT LEAK: 0x10b17c000 [67108864]
      1 (32.0M) ROOT LEAK: 0x105726000 [33554432]
      1 (16.0M) ROOT LEAK: 0x104726000 [16777216]
      1 (8.00M) ROOT LEAK: 0x103f26000 [8388608]
      1 (4.00M) ROOT LEAK: 0x103b26000 [4194304]
      1 (2.00M) ROOT LEAK: 0x103926000 [2097152]
      1 (1.00M) ROOT LEAK: 0x103826000 [1048576]
      1 (512K) ROOT LEAK: 0x1037a6000 [524288]
      1 (256K) ROOT LEAK: 0x103766000 [262144]
      1 (128K) ROOT LEAK: 0x103746000 [131072]
      1 (64.0K) ROOT LEAK: 0x103735000 [65536]
      1 (32.0K) ROOT LEAK: 0x7fa354007800 [32768]
      1 (16.0K) ROOT LEAK: 0x7fa354003800 [16384]
      1 (8.00K) ROOT LEAK: 0x7fa354001800 [8192]
      1 (4.00K) ROOT LEAK: 0x7fa354000800 [4096]
      1 (2.00K) ROOT LEAK: 0x7fa354000000 [2048]
      1 (1.00K) ROOT LEAK: 0x7fa353802000 [1024]
      1 (512 bytes) ROOT LEAK: 0x7fa3535000a0 [512]
      1 (256 bytes) ROOT LEAK: 0x7fa353402fa0 [256]
      1 (128 bytes) ROOT LEAK: 0x7fa353500020 [128]
      1 (64 bytes) ROOT LEAK: 0x7fa353600000 [64]
      1 (32 bytes) ROOT LEAK: 0x7fa353402d40 [32]
      1 (16 bytes) ROOT LEAK: 0x7fa353402eb0 [16]
      1 (16 bytes) ROOT LEAK: 0x7fa353402ec0 [16]
      1 (16 bytes) ROOT LEAK: 0x7fa353500000 [16]
      1 (16 bytes) ROOT LEAK: 0x7fa353500010 [16]
  1. 您可以使用Malloc调试功能

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接