Mac OSX - проблема Xcode / утечки - PullRequest
4 голосов
/ 12 января 2009

Я новичок в разработке с использованием Xcode, и у меня возникли проблемы с использованием встроенного инструмента Leaks.

Я включил guard malloc и поместил MallocStackLogging YES и MallocStackLoggingNoCompact YES в переменные среды для исполняемого файла. Затем запустите процесс, нажав

Выполнить-> Начать с инструмента повышения производительности-> Утечки

Но в пользовательском интерфейсе отображаются только выделения объектов. В кадре утечек все, что он говорит, это «Анализ процесса» (я оставляю его более 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

но кто-нибудь знает, почему интерфейс не показывает то же самое?

Спасибо

1 Ответ

2 голосов
/ 12 января 2009

Проблема в том, что приложение компилируется как 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...