Я новичок в разработке с использованием Xcode, и у меня проблемы с использованием встроенного инструмента утечек.
Я включил охранный 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
но кто-нибудь знает, почему пользовательский интерфейс не показывает то же самое?
Спасибо





Проблема, похоже, заключается в компиляции приложения как 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-битная математика), он будет зависать в «Процессе анализа». Что-то я здесь делаю не так? Я использую MacBook Pro с процессором Intel Core 2 Duo