memleax отлаживает и находит утечки памяти без перезагрузки сервиса или процесса и без перекомпилляции.
URL: https://github.com/WuBingzheng/memleax
как это работает
memleax ищет утечки памяти работающего процесса путем присоединения к нему. Он ловит в целевом процессе вызовы выделения памяти и освобождения и сообщает о блоках памяти, которые живут дольше заданного времени. По умолчанию, долгий период жизни считается более 10 секунд, однако этот параметр может быть изменен опцией -e
.
Это очень удобно использовать и подходит для рабочих серверов. Т.к нет необходимости в пересборке программы. Вы запускаете memleax присоединив его к целевому процессу, ждете и получаете отчет в реальном времени, потом убиваете memleax(Ctrl-C) и мониторинг прекращается.
memleax отслеживает новые потоки, НО не следит за отпочковавшимися процессами. Для слежения за всеми экземплярами процесса, необходимо для каждого из них запускай свой экземпляр memleax.
влияние на производительность
Т.к в целевом процессе, на каждое выделение и освобождение памяти срабатывает ловушка, то число выделений и освобождений влияют на производительность. Чем чаще идут отслеживаемые вызовы, тем медленнее выполняется целевой процесс.
сборка
Необходимы пакеты:
- libunwind
- libelf
- libdw или libdwarf. libdw предпочтительнее
Когда все библиотеки установлены - запустите:
./configure
make
sudo make install
Использование
Для отладки целевого процесса, запустите:
memleax [options] <target-pid>
отчеты будут выдаваться в режиме реального времени.
Подождите. Блоки памяти живущее дольше чем установлено -e
параметром, будут отображаться так:
CallStack[3]: memory expires with 101 bytes, backtrace:
0x00007fd322bd8220 libc-2.17.so malloc()+0
0x000000000040084e test foo()+14 foo.c:12
0x0000000000400875 test bar()+37 bar.c:20
0x0000000000400acb test main()+364 test.c:80
CallStack[3] is the ID of CallStack where memory leak happens.
Добавить комментарий
Поиск
AlexBR
Обо мне
bayrepo.info@gmail.com, все!
Репозиторий с полезными пакетами(по моему мнению):
CentOS 9
есть самописные программы и библиотеки описанные в блоге и документации, а так же последние версии используемых мною программ.
Отладчики, дизассемблеры, статические анализаторы
Блог удач и неудач. Здесь я выкладываю статьи о начинаниях которые получились и которые не получались.
youtube канал
rutube канал
Популярные теги
Электроника Схема Linux Электричество Отладка программ Моделирование C/C++ Печатная плата Практика SystemTap репозиторий AVR Тестирование gdb Микромир Микроскоп Таблицы shared-memory CNC3018 Apache PHP Octave SonarQube radare2 BayZR cmake Программатор Arduino hash-table 3D печать НейросетьАрхив
- 2024
- 2023
- 2022
- 2021
-
2020
-
Декабрь 2020
- Электронная нагрузка на полевом транзисторе
- Keyes Q37 подключение
- Управление серводвигателями на attiny13a
- Определение нажатия кнопки контроллером AVR с помощью прерывания
- Микромир из вазы с водой
- Трюки при разработке и проектировании схем с микроконтроллерами AVR
- Радионабор 433МГц. Джойстик с радиопередатчиком
- Насекомые и лужа
- Инфузории
- Микромир. Часть 1
- Использование Cutter + radare2 для исследования исполнимых файлов
- Ноябрь 2020
- Октябрь 2020
- Сентябрь 2020
- Август 2020
- Май 2020
- Январь 2020
-
Декабрь 2020
- 2019
- 2018
-
2017
- Декабрь 2017
- Сентябрь 2017
- Август 2017
- Июль 2017
- Июнь 2017
- Май 2017
- Апрель 2017
-
Март 2017
- SystemTap - часть 5. Наброски и черновики
- SystemTap - часть 4. Упрощенная версия ltrace своими руками
- SystemTap - часть 3. Напишем свой probe
- SystemTap - часть 2
- Разбор схемы моргающего диода. Практика. Электроника часть 4.
- Разбор схемы моргающего диода. Электроника часть 3
- Источник отрицательного напряжения. Электроника часть 2. Попытаюсь для себя обосновать.
- Источник отрицательного напряжения. Электроника часть 1
- Февраль 2017