Открыть главное меню

Electric Fence, eFence — отладчик памяти, написанный Брюсом Перенсом. Представляет собой библиотеку, с которой программист может скомпоновать свой код и перекрыть вызовы функций распределения памяти стандартной библиотеки языка Си. eFence вызывает критический сбой программы, когда происходит ошибка работы с памятью. С помощью отладчика можно найти и проанализировать код, вызвавший ошибку.

Electric Fence предназначен для поиска двух основных типов программных ошибок:

  • Выход за границы динамического буфера;
  • Использование динамически выделенного буфера после его возвращения в кучу.

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

Electric Fence выделяет не менее двух страниц (то есть на большинстве компьютеров 8Кб) для каждого выделенного буфера. В некоторых режимах работы он не возвращает системе освобождённые программой буфера, а использует их для своих нужд. Поэтому Electric Fence сильно увеличивает потребление памяти отлаживаемой программой. Electric Fence стоит применять для отладки небольших программ, и никогда не следует рабочий код компилировать с Electric Fence.

Electric Fence свободная программа, под лицензией GNU General Public License.