Можете ли вы порекомендовать хорошую отладочную библиотеку malloc для linux? - PullRequest
5 голосов
/ 05 марта 2010

Можете ли вы порекомендовать хорошую отладочную библиотеку malloc для linux? Я знаю, что есть много вариантов, мне просто нужно знать, какие библиотеки люди фактически используют для решения реальных проблем.

Спасибо!

РЕДАКТИРОВАТЬ: я знаю о Valgrind, но иногда производительность действительно слишком низкая.

Ответы [ 5 ]

5 голосов
/ 05 марта 2010

http://valgrind.org/ для поиска утечек памяти и повреждения кучи.

http://dmalloc.com/ для отладки кучи общего назначения.

5 голосов
/ 05 марта 2010

Valgrind .:-) Это не библиотека malloc, но она действительно хороша в обнаружении ошибок управления памятью и использования памяти.

2 голосов
/ 05 марта 2010

Библиотека GNU C имеет некоторые функции отладки и ловушки, которые вы можете использовать для добавления своих собственных.

Для документации по системе Linux введите info libc, а затем g Heap<TAB>.Другой полезный информационный узел - «Крючки для Маллока», вы можете получить его с помощью g Hooks<TAB>

1 голос
/ 22 марта 2017

gcc теперь поставляется с дезинфицирующими средствами, которые намного быстрее, чем valgrind. Вы можете проверить различные параметры компилятора в -fsanitize. Подробнее здесь

1 голос
/ 05 марта 2010

Это может быть не очень полезно для вас, но вы можете написать свою собственную оболочку malloc. В наших специальных «диагностических» сборках он хранит таблицу всех ожидающих выделений (включая имя файла и номер строки, где произошло выделение) и распечатывает все, что еще оставалось невыполненным во время выхода. Он также использует канареечные слова (для проверки переполнения буфера) и комбинации перезаписи памяти и контрольной суммы блоков после освобождения и перед перераспределением (для проверки использования после освобождения).

Если ваш продукт достаточно большой, может быть раздражает необходимость найти и заменить весь ваш источник, надеясь на лучшее. Кроме того, время разработки вашей собственной оболочки malloc, вероятно, не является незначительным. Выполнение большого количества тяжеловесных вещей, подобных тому, что я упоминал выше, вероятно, также не поможет решить вашу проблему со скоростью. Однако написание вашей собственной обертки дало бы наибольшую гибкость.

...