Использование Electric Fence

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

$ /broken Electric Fence 2.2.0 Copyright (C) 1987 1999 Bruce Perens.

1 12345

Segmentation fault (core dumped) Ошибка сегментации (дамп ядра сброшен) Хотя Electric Fence непосредственно не указывает на место, где произошла ошибка, проблема становится намного очевидней. Можно легко и точно определить проблемный участок, запустив программу под управлением отладчика, например gdb. Для того чтоб gdb смог точно указать на проблему, соберите программу с отладочной информацией, указав для дсс флажок д, затем запустите gdb и зададите имя исполняемого файла, который нужно отладить. Когда программы уничтожается, gdb точно показывает, в какой строке произошел сбой.

Вот как выглядит описанная процедура.

Мини-картинка

$ gcc ggdb Wall о broken broken. с lefence $ gdb broken (gdb) run Starting program: /usr/src/lad/code/broken Electric Fence 2.2.0 Copyright (C) 1987 1999 Bruce Perens. 1: 12345

Program received signal SIGSEGV, Segmentation fault. Программа получила сигнал SIGSEGV, ошибка сегментации. 0х007948с6 in strcpyO from /lib/tls/libc. so.6 (gdb) where 0 0x007948c6 in strcpyO from /lib/tls/libc. so.6 1 0x08048566 in broken() at broken. c:21 2 0x08048638 in main() at broken. c:47 (gdb) Благодаря Electric Fence и gdb, становится понятно, что в строке 21 файла broken. с имеется ошибка, связанная со вторым вызовом strep у ().


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок