LMDBG е приложение, което позволява откриване памет leaksand двойни FreeS & Nbsp;. Въпреки това, за разлика от другите, LMDBG генерира * FULL * stacktracesand разделя влезете от анализ thusallowing да анализираме заявление на базата на-модул.
- <Силен> lmdbg управляван е основен lmdbg полезност. Тя работи заявление и създава лог файл (или FIFO), където всички наречен изчистване / calloc / презаделяне / безплатно / memalign / posix_memalign извиквания са регистрирани с техния принос (прекъсва при, показалеца), изход (показалец) и (!!! уникати черта !!!) FULL STACKTRACE (указатели).
Пример:
& Nbsp; & Nbsp; & Nbsp; & Nbsp; $ Котка тестове / test2.c
& Nbsp; & Nbsp; & Nbsp; & Nbsp; #include
& Nbsp; & Nbsp; & Nbsp; & Nbsp; INT главната ()
& 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 = презаделяне (p2, 666);
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; p2 = презаделяне (p2, 777);
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; p2 = презаделяне (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; презаделяне (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; презаделяне (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; презаделяне (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; $
<Силен> Забележка: Full stacktrace ви позволява да анализирате вашата кандидатура, т.е. вие може да открие това, което блокове / компоненти изискват повече памет, отколкото други и защо. lmdbg-SYM е много важен инструмент за това, виж по-долу.
- <Силни> lmdbg-течове анализира лог файл, генериран от lmdbg управляван и на изхода на всички открити течове памет
<Силен> Пример:
& Nbsp; & Nbsp; & Nbsp; & Nbsp; $ lmdbg-течове _log & Nbsp; & Nbsp;
& Nbsp; & Nbsp; & Nbsp; & Nbsp; презаделяне (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-SYM преобразува адреси да source.c: 999, ако е възможно
Пример (GDB (1) е в действие):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; $ Lmdbg-SYM ./_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; презаделяне (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; презаделяне (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; презаделяне (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-SYM -а ./_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; презаделяне (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; презаделяне (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; презаделяне (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 силни> - намерени greps или прескача система течове памет в библшотеката, libdl, C ++ STL др Виж тестове / lmdbg * .conf файлове. Файловете Настр.подразб.конф са: ~ / .lmdbg.conf и /etc/lmdbg.conf
- <Силни> lmdbg силни> = lmdbg управляван + lmdbg-течове + lmdbg-SYM + 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; презаделяне (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-SYM вече не segfaults поради проблеми с stacktrace (3).
- се добавя много по-прости и правилния метод A адрес преобразуване.
- Има значителни speedups поради оптимизации за GDB.
- В lmdbg управляван изчистване куки Glibc вече не се използват.
- собствен код lmdbg не е включен в stacktraces.
- Нов -N опция е добавен и -v опцията получи маловажна поправка.
- lmdbg-Stat получи поправки за нулев и сочен, който се появи, ако безплатна (3) или презаделяне (3) stacktrace е без подходяща изчистване / презаделяне (3) stacktrace.
- Имаше и други дребни поправки и подобрения, подобрения в регресия тестове и подобрения в stacktrace (3).
Какво ново във версия 1.1.0:.
- корекция в регресия тестове
- lmdbg-писта: нулеви адреси са отстранени от stacktraces генерирани от обратно проследяване НЬс е (3) .
- Това определя твърди в lmdbg-Stat (1).
- Double & quot; 0x & quot; проблеми в & quot на; инфо секцията & quot; са фиксирани (видян на NetBSD).
- обратно проследяване (3) от libexecinfo (ако има такива) се използва вместо вграден изпълнение.
- lmdbg-SYM:. Няколко грешки бяха фиксирани в преобразуване на адреси, за да символа
- lmdbg-Stat: непълно прочетете линии сега се игнорират, така че там не са по-твърди, (3) е, когато някое приложение се дебъгва е убит .
- Алтернативен изпълнение написани на AWK се отстранява.
Какво ново във версия 0.17.0:
- Тази версия добавя много подобрения и поправки в наръчници, нови възможности в lmdbg, lmdbg управляван и lmdbg-SYM и малки корекции да lmdbg-Stat.
- lmdbg сега е мета инструмент, който е в състояние да направи много повече неща, а не само намери изтичане на памет.
Какво ново във версия 0.15.1:
- Logging на calloc (3) извиквания е забранен за НЬс-базирани системи (Linux, GNU / kFreeBSD, а може би и други), защото lmdbg-крива не върху тях.
- Малки чисти зони, поправки и подобрения. MK-Configure & GT;. се изисква = 0.20 за сграда
Какво ново във версия 0.14.0:
- Нови инструменти: lmdbg-Stat, lmdbg-Впиши и lmdbg-сортиране за събиране и анализ на статистическа информация за разпределението на паметта.
- lmdbg-писта: нови възможности за lmdbg-писта:. -S И -M за генериране на скъсени stacktraces
- lmdbg-SYM:. Нова опция -p за получаване на име на програма от изхода lmdbg управляван му
- Fix: "тест mkcmake" премахва временните файлове .
Коментари не е намерена