Я загрузил исходный код LibC с сайта opensource.apple.com, но, поскольку он является частью одной монолитной библиотеки /usr/lib/libSystem.B.dylib, должен ли я каким-то образом пересобирать все это?

У меня есть программа командной строки BSD, перенесенная из Linux. Я хочу иметь возможность устанавливать точки останова в функциях LibC и выполнять их пошагово. Я пытаюсь приблизиться к тому, что кажется повреждением кучи в моей программе (чего не происходит в Linux - я уже перенес обратно в Linux и запустил там memcheck).

3
Erik Olson 10 Ноя 2009 в 02:21

2 ответа

Вы можете собрать Valgrind самостоятельно — либо используйте последнюю версию, выпущенную в 10.5, либо посмотрите в системе отслеживания ошибок ошибку поддержки Snow Leopard, для которой есть патч.

В качестве альтернативы попробуйте инструменты отладки памяти в malloc(3) руководство.

0
alex strange 5 Дек 2009 в 10:22
Я попробовал valgrind на Snow Leopard. Мне пришлось работать только с системными вызовами, которые патч не покрывает, например, с sigwait(). (Полезный опыт переноса.) В конце концов, valgrind сказал мне не больше, чем то, что сделал отладчик - Invalid Write (через испорченное значение указателя). Я все еще хочу иметь возможность выполнить вызов libC, чтобы увидеть, когда указатель становится недействительным. Спасибо, в любом случае.
 – 
Erik Olson
9 Дек 2009 в 00:49