2009-01-12 5 views
4

Je suis novice dans le développement utilisant Xcode et j'ai du mal à utiliser l'instrument de fuite intégré.Mac OSX - Problème avec Xcode/Leaks

J'ai activé guard malloc et ai mis MallocStackLogging YES & MallocStackLoggingNoCompact YES dans les variables d'environnement pour l'exécutable. Ensuite, le processus en cours d'exécution en cliquant sur

Exécuter-> commencant performances outil-> Fuites

Mais seul objet allocations montrent dans l'interface utilisateur, dans les fuites encadrent tout ce qu'il dit est « processus d'analyse de » (je l'ai laissé pour plus de 20 minutes comme celui-ci sans changement)

Je crée deliberatly une fuite dans le principal()

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

mais aucun changement

Si je cours f epuis la console

~$ leaks ProcessName 

Il rend compte correctement

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 

mais personne ne sait pourquoi l'interface utilisateur ne montrera pas la même chose?

Merci

Répondre

2

Le problème semble être la compilation de l'application comme 64 bits. Un projet Xcode de test simple

#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); 
    } 

} 

Fuites afficheront correctement si l'architecture est i386 si je compile comme x86_64 (64 bits mathématiques requis), il se bloque sur « processus d'analyse de ». Y at-il quelque chose que je fais mal ici? J'utilise un macbook pro Intel Core 2 Duo

Questions connexes