【问题标题】:Mac OSX - Xcode/Leaks problemMac OSX - Xcode/泄漏问题
【发布时间】:2010-09-30 20:25:13
【问题描述】:

我是使用 Xcode 进行开发的新手,在使用内置的 Leaks Instrument 时遇到了问题。

我已启用保护 malloc 并将 MallocStackLogging YES 和 MallocStackLoggingNoCompact YES 放入可执行文件的环境变量中。然后通过单击运行该过程

运行->从性能工具开始->泄漏

但 UI 中只显示对象分配,在泄漏框架中,它只显示“正在分析过程”(我已经将其放置了 20 多分钟,没有任何变化)

我故意在 main() 中创建了一个泄漏

void * leak = malloc(100);
    leak=NULL;

但没有变化

如果我从控制台运行

  ~$ leaks ProcessName

它正确报告

Process 1014: 223344 nodes malloced for 9017 KB
Process 1014: 1 leak for 112 total leaked bytes.
Leak: 0x100100020  size=112 string ''
    Call stack: [thread 0x7fff70767720]: | start | main | malloc | malloc_zone_malloc

但有人知道为什么 UI 不会显示相同的东西吗?

谢谢

【问题讨论】:

    标签: c++ xcode macos


    【解决方案1】:

    问题似乎是将应用程序编译为 64 位。一个简单的测试Xcode项目

    #include <iostream>
    
    void leaks(){
    
        char * newleak = (char* ) malloc(2000);
    
        return;
    }
    
    int main (int argc, char * const argv[]) {
    
        void * leak = malloc(100);
        leak = NULL;
    
    
        while(1){
            leaks();
            sleep(10);  
        }
    
    }
    

    如果架构是 i386,泄漏将正确显示,但是如果我编译为 x86_64(需要 64 位数学),它将挂在“分析过程”上。我在这里做错了什么吗?我使用的是 Intel Core 2 Duo macbook pro

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2015-09-14
      • 2016-07-28
      相关资源
      最近更新 更多