Мне удалось заставить инструмент Xcode leaks
сообщать об утечках в моей программе Ada GCC из командной строки (добавив delay 11.0;
в конце, чтобы leaks
сделал свои проверки), а затем
$ export MallocStackLogging=1
$ (./foobar &) && leaks foobar
, что приводит к (отрывку)
Process 52027: 18 nodes malloced for 2053 KB
Process 52027: 2 leaks for 32 total leaked bytes.
Leak: 0x1002000c0 size=16 zone: DefaultMallocZone_0x100175000 string '*'
Call stack: [thread 0x7fff70bbcca0]: | start | main | _ada_foobar | __gnat_malloc | malloc | malloc_zone_malloc
Leak: 0x1002000d0 size=16 zone: DefaultMallocZone_0x100175000 string 'T'
Call stack: [thread 0x7fff70bbcca0]: | start | main | _ada_foobar | __gnat_malloc | malloc | malloc_zone_malloc
, что намного лучше, чем ничего, но будет значительно улучшено с номерами строк.
Существуют ли какие-либо варианты сборки Iдолжен был использовать?Будет ли это работать лучше, если компилятор Ada (FSF GCC 4.6.0, не от Apple) был интегрирован с Xcode?
Это сборка x86_64 на 10.6.7, Xcode 3.2.6.Использование -g не имеет значения.
В стеке вызовов main
- это main()
, сгенерированный gnatmake
, _ada_foobar
- это программа Ada, в которой фактически происходит утечка.Другие кадры взяты из системы времени выполнения.