Подтвердить что ты не робот

Есть ли альтернативы valgrind в Mac OS X Mountain Lion и Mavericks для обнаружения утечек памяти для приложений C/С++?

Я использовал valgrind для обнаружения утечек памяти для своих приложений на C/С++ в Mac OS X 10.6 (Snow Leopard) и 10.7 (Lion), но Я считаю, что он не поддерживается в последних выпусках, таких как 10.8 (Mountain Lion) и 10.9 (Mavericks), когда я обновил свою ОС. Есть ли что-то вроде valgrind, которое можно установить в Mac OS X 10.9?

4b9b3361

Ответ 1

В 2013-11-01 команда valgrind объявила Valgrind 3.9.0:

Мы рады объявить о выпуске новой версии Valgrind версии 3.9.0, доступный из http://www.valgrind.org.

3.9.0 - это выпуск функций со многими улучшениями и обычным сбор исправлений ошибок. В этом выпуске добавлена ​​поддержка MIPS64/Linux, Инструкции Intel AVX2 и инструкции POWER8. Поддержка DFP была добавлено для S390. Первоначальная поддержка аппаратной транзакционной памяти был добавлен для платформ Intel и POWER. Поддержка Mac OS X 10.8 (Горный лев). Точность Memcheck на векторизованной код был улучшен.

Остается выяснить, поддерживает ли улучшенная поддержка Горного Льва, работает ли она хорошо для Маверикс. Он упоминает, что поддержка поддерживается только для 64-битного кода.

[... время проходит... загрузка происходит... надежды подняты... попытка конфигурации... надежды разбиты...]

Urgh!

...
checking build system type... x86_64-apple-darwin13.0.0
checking host system type... x86_64-apple-darwin13.0.0
checking for a supported CPU... ok (x86_64)
checking for a 64-bit only build... no
checking for a 32-bit only build... no
checking for a supported OS... ok (darwin13.0.0)
checking for the kernel version... unsupported (13.0.0)
configure: error: Valgrind works on Darwin 10.x and 11.x (Mac OS X 10.6/7)

Горный лев основан на Дарвине 12.x; Маверикс основан на Дарвине 13.x. Я не уверен в сообщениях в сообщениях об ошибках, но из коробки Valgrind 3.9.0 не компилируется на OS X Mavericks.

Ответ 2

Просто, чтобы вы знали, вам, возможно, не придется долго ждать, пока Valgrind работает над Mac 10.9 a.k.a Maverick. Поскольку в соответствии с этот отчет об ошибках был достигнут некоторый успех.

По моему мнению, в настоящее время (по состоянию на 15 ноября 2013 года) нет альтернатив Valgrind для Mac. Есть некоторые, чтобы следить, хотя, а именно Clang, который имеет как AddressSanitizer (работает с текущими маками), так и MemorySanitizer (macs пока не поддерживается).

Есть предложения по использованию Xcode Instruments, но я не нашел его полезным вообще.

Ответ 3

В дополнение к инструментам, упомянутым выше в @Charlie_Burns, есть также статический анализатор, который может рассказать вам о некоторых из этих вещей, просто проанализировав ваш код. В своем проекте Xcode просто выберите "Проанализировать" в меню "Продукт". Он вызывает статический анализатор clang. Я думаю, вы можете использовать clang непосредственно из командной строки, если хотите, тоже, хотя я этого не сделал.

В командной строке вы также имеете доступ к команде leaks и команде dtrace.