LMDBG є додаток, що дозволяє виявляти пам'ять leaksand подвійні FreeS & NBSP ;. Однак, на відміну від інших, LMDBG генерує * Повна * stacktracesand відокремлює реєстрації з аналізу thusallowing проаналізувати заявку на кожного модуля основі.
- <Сильний> lmdbg перспективі є основним утиліта lmdbg. Це запускає додаток і створює файл журналу (або FIFO), де всі називається Танос / calloc / Realloc / безкоштовно / memalign / posix_memalign виклики реєструються їх вклад (рахунок байта, покажчик), вихід (покажчик) і (!!! унікумів Функція !!!) FULL StackTrace (покажчики).
Приклад:
І NBSP; & NBSP; & NBSP; & NBSP; Тести $ CAT / test2.c
І NBSP; & NBSP; & NBSP; & NBSP; # Включати в себе
І NBSP; & NBSP; & NBSP; & NBSP; INT Main ()
І NBSP; & NBSP; & NBSP; & NBSP; {
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; недійсними * p1 = NULL;
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; недійсними * p2 = NULL;
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; p1 = Танос (555);
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; p2 = Realloc (P2, 666);
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; p2 = Realloc (P2, 777);
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; p2 = Realloc (P2, 888);
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; повернутися 0;
І NBSP; & NBSP; & NBSP; & NBSP; }
І NBSP; & NBSP; & NBSP; & NBSP; $ GCC -O0 -g -o _test2 тести / test2.c
І NBSP; & NBSP; & NBSP; & NBSP; $ Lmdbg перспективі -o _log ./_test2
І NBSP; & NBSP; & NBSP; & NBSP; $ Кот _log
І NBSP; & NBSP; & NBSP; & NBSP; Танос (555) -> 0xbb901400
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5b03
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048738
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (NULL, 666) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804874e
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901800, 777) -> 0xbb901c00
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048764
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901c00, 888) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804877a
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; $
ПРИМІТКА: Повний StackTrace дозволяє аналізувати вашу заявку, тобто ви можете виявити, що блоки / компоненти вимагають більше пам'яті, ніж інші, і чому. lmdbg-сім є дуже важливим інструментом для цього, дивіться нижче.
- lmdbg-витоку аналізує файл журналу, створений за lmdbg перспективі і виводити всі знайдені витоку пам'яті
Приклад:
І NBSP; & NBSP; & NBSP; & NBSP; $ Lmdbg-витоку _log і NBSP; & NBSP;
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901c00, 888) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804877a
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Танос (555) -> 0xbb901400
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5b03
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048738
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; $
- <Сильний> lmdbg-сім перетворює адреси в source.c: 999, якщо це можливо
Приклад (GDB (1) в дії):
І NBSP; & NBSP; & NBSP; & NBSP; $ Lmdbg-сім ./_test2 _log
І NBSP; & NBSP; & NBSP; & NBSP; Танос (555) -> 0xbb901400
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5b03
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048738 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 8 основних
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (NULL, 666) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804874e & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 9 Основний
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901800, 777) -> 0xbb901c00
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048764 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 10 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; головний
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901c00, 888) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804877a & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 11 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; головний
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; $
Приклад (addr2line (1) працює тут):
І NBSP; & NBSP; & NBSP; & NBSP; $ Lmdbg-сім -a ./_test2 _log
І NBSP; & NBSP; & NBSP; & NBSP; Танос (555) -> 0xbb901400
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5b03
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048738 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (NULL, 666) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804874e & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 9
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901800, 777) -> 0xbb901c00
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048764 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 10
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901c00, 888) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804877a & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 11
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; $
- lmdbg-sysleaks - відбирає або пропуск системи витоку пам'яті знаходиться в LIBC, libdl, C ++ STL і т.д. Див тести / lmdbg файлів конфігурації. Файлів, конфігурації за замовчуванням, є: ~ / .lmdbg.conf і /etc/lmdbg.conf
- lmdbg = lmdbg-Run + lmdbg-витоку + lmdbg-сім + lmdbg-sysleaks
Це lmdbg все-в-одному вище інструмент рівень.
Приклад:
І NBSP; & NBSP; & NBSP; & NBSP; $ Lmdbg -v -o _log ./_test2
І NBSP; & NBSP; & NBSP; & NBSP; Витоку пам'яті були виявлені і збережені в файл '_log "
І NBSP; & NBSP; & NBSP; & NBSP; $ Кот _log
І NBSP; & NBSP; & NBSP; & NBSP; Realloc (0xbb901c00, 888) -> 0xbb901800
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5a37
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x804877a & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 11 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; головний
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; Танос (555) -> 0xbb901400
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe58e8
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0xbbbe5b03
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048738 & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тести / test2.c: 8 основних
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x8048584
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; 0x80484e7
І NBSP; & NBSP; & NBSP; & NBSP; $
Що нового У цьому випуску:
- lmdbg-сім більше не повертає помилку сегментації через проблеми з StackTrace (3).
- був доданий набагато простіше і правильний метод перетворення адреси.
- Були значні прискорень через оптимізації для GDB.
- власний код lmdbg не включений в stacktraces.
- Новий -N опція була додана, і опція -v отримав незначні виправлення.
- lmdbg статистика отримав виправлення для порожнього разименованія, яка з'явилася, якщо безкоштовно (3) або перерозподілити (3) StackTrace був без необхідності виділення пам'яті / Realloc (3) StackTrace.
- Були інші незначні виправлення і поліпшення, удосконалення в регресійних тестів, а також поліпшення в StackTrace (3).
не «LI> В lmdbg перспективі, GLibC Танос гачки більше не використовується.
Що нового у версії 1.1.0 :.
- Виправлена помилка з регресійних тестів
- lmdbg траса: нуль адреси видаляються з stacktraces породжених зворотного трасування GLibC в (3) .
- Це виправляє стверджує в lmdbg-Stat (1).
- Двічі & Quot; 0x & Quot; питання в & Quot; розділі Інформація & Quot; були зафіксовані (видно на NetBSD).
- трасування (3) libexecinfo (якщо є) використовується замість вбудованого в реалізації.
- lmdbg-сім :. Кілька помилки були виправлені в перетворенні адрес для символів
- lmdbg-Stat: повністю прочитати рядки тепер ігноруються, так не існує не більше стверджувати (3) • При додаток налагоджували убитий .
- Альтернативна реалізація написано в AWK був видалений.
Що нового у версії 0.17.0:
- Ця версія додає безліч поліпшень і виправлень в сторінки керівництва, нові можливості в lmdbg, lmdbg перспективі, і lmdbg-сім, і дрібні виправлення в lmdbg-стат.
- lmdbg зараз мета інструмент, який здатний зробити багато більше речей, а не просто знайти витоку пам'яті.
Що нового у версії 0.15.1:
- Ведення журналу calloc (3) виклики відключена на Glibc системи на основі образів (Linux, GNU / kFreeBSD, і, можливо, інші), тому що lmdbg перспективі не буде працювати на них.
- Невеликі чисті вікна, виправлення і поліпшення. MK-Налаштування-GT ;. = 0,20 потрібно для побудови
Що нового у версії 0.14.0:
- Нові інструменти: lmdbg-статистика, lmdbg-Grep і lmdbg сортування для збору та аналізу статистичної інформації про розподіл пам'яті.
- lmdbg траса: нові можливості для lmdbg перспективі :. -S І -M для створення укорочені stacktraces
- lmdbg-сім :. Нова опція -p для отримання імені програми з виходом lmdbg перспективі в
- Виправлена помилка: 'mkcmake тест "видаляє тимчасові файли .
Коментар не знайдено