LMDBG yra programa, kuri leidžia aptikti atminties leaksand dviviečiai išlaisvina & nbsp;. Tačiau, skirtingai nuo kitų, LMDBG generuoja * PILNAS * stacktracesand atskiria prisijungti iš analizės thusallowing analizuoti įtakos vienam modulyje taikymą.
- lmdbg-Run " yra pagrindinė lmdbg naudingumas. Jis veikia paraišką ir sukuria failą (ar FIFO) jeigu visi vadinamas malloc / calloc / realloc / nemokamai / memalign / posix_memalign Modły yra registruoti jų indėlį (baitų skaičius, žymeklis), produkcijos (žymeklis) ir (!!! unikalių funkcija !!!) PILNAS stacktrace (rodyklės).
Pavyzdys:
& Nbsp; & nbsp; & nbsp; & nbsp; $ Cat testai / test2.c
& Nbsp; & nbsp; & nbsp; & nbsp; #include
& Nbsp; & nbsp; & nbsp; & nbsp; int main ()
& Nbsp; & nbsp; & nbsp; & nbsp; {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; negaliojančiu * p1 = NULL;
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; negaliojančiu * p2 = NULL;
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; p1 = malloc (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; grįžti 0;
& Nbsp; & nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; & nbsp; $ Gcc -O0 -g -o _test2 testai / test2.c
& Nbsp; & nbsp; & nbsp; & nbsp; $ Lmdbg-run -o _log ./_test2
& Nbsp; & nbsp; & nbsp; & nbsp; $ Katė _log
& Nbsp; & nbsp; & nbsp; & nbsp; malloc (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; $
Pastaba: Visas stacktrace leidžia jums analizuoti savo paraišką, ty galite aptikti ką blokai / Komponentai reikalauja daugiau atminties nei kiti, ir kodėl. lmdbg-SYM yra labai svarbi priemonė, už tai, žr.
- lmdbg-nuotėkis , analizuoja failą generuoja lmdbg perspektyvoje ir išvesties visos surastos atminties nutekėjimas
Pavyzdys:
& Nbsp; & nbsp; & nbsp; & nbsp; $ lmdbg-nutekėjimas _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; malloc (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 , konvertuoja adresus source.c: 999, jei tai įmanoma
Pavyzdys (gdb (1) yra veiksmo):
& Nbsp; & nbsp; & nbsp; & nbsp; $ Lmdbg-SYM ./_test2 _log
& Nbsp; & nbsp; & nbsp; & nbsp; malloc (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; testai / test2.c: 8 Pagrindinis
& 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; testai / test2.c: 9 Pagrindinis
& 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; testai / test2.c: 10 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pagrindinis
& 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; testai / test2.c: 11 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pagrindinis
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x8048584
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x80484e7
& Nbsp; & nbsp; & nbsp; & nbsp; $
Pavyzdys (addr2line (1) čia dirba):
& Nbsp; & nbsp; & nbsp; & nbsp; $ Lmdbg-SYM -a ./_test2 _log
& Nbsp; & nbsp; & nbsp; & nbsp; malloc (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; testai / 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; testai / 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; testai / 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; testai / test2.c: 11
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x8048584
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x80484e7
& Nbsp; & nbsp; & nbsp; & nbsp; $
- lmdbg-sysleaks - greps ar praleidžia sistemos Atminties nutekėjimas rasti libc, libdl C ++ stl ir tt Žr testų / lmdbg * .conf failus. Numatytieji konfigūracijos failai: ~ / .lmdbg.conf ir /etc/lmdbg.conf
- lmdbg = lmdbg-Run + lmdbg-nutekėjimas + lmdbg-Sym + lmdbg-sysleaks
Tai lmdbg yra All-in-One "aukštesnio lygio įrankis.
Pavyzdys:
& Nbsp; & nbsp; & nbsp; & nbsp; $ Lmdbg -v -o _log ./_test2
& Nbsp; & nbsp; & nbsp; & nbsp; Atminties nutekėjimas buvo aptikta ir išsaugoti į failą "_log"
& Nbsp; & nbsp; & nbsp; & nbsp; $ Katė _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; testai / test2.c: 11 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pagrindinis
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x8048584
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x80484e7
& Nbsp; & nbsp; & nbsp; & nbsp; malloc (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; testai / test2.c: 8 Pagrindinis
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x8048584
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 0x80484e7
& Nbsp; & nbsp; & nbsp; & nbsp; $
Kas naujo , šioje laidoje:
- lmdbg-SYM nebėra segfaults dėl problemų su stacktrace (3).
- daug paprastesnis ir teisinga adresas konversijos metodas buvo pridėta.
- Nebuvo reikšmingų speedups dėl optimizavimu gdb.
- Be lmdbg perspektyvoje, glibc malloc kabliukai nebenaudojami.
- lmdbg savo kodas nėra įtrauktas į stacktraces.
- Naujas -N galimybė buvo įtraukta ir -v variantas gavo nedidelį pakeitimą.
- lmdbg-stat gavo pataisymai NULL dereference, kad pasirodė, jei nemokamai (3) arba realloc (3) stacktrace buvo be tinkamo malloc / realloc (3) stacktrace.
- Nebuvo kitų nedidelių pataisymų ir patobulinimų, patobulinimai regresijos bandymų ir patobulinimai stacktrace (3).
Kas naujo versijos 1.1.0:.
- pagal regresijos bandymų nustatyti
- lmdbg-run: nulis adresai pašalinami iš stacktraces generuojamų glibc anketa pėdsakas (3) .
- Tai nustato tvirtina, lmdbg-Stat (1).
- Dvivietis & quot; 0x & quot; klausimai & quot; informacijos skyriuje & quot; buvo fiksuotas (matyti NetBSD).
- pėdsakas (3) nuo libexecinfo (jei yra) naudojamas vietoj built-in įgyvendinti.
- lmdbg-Sym:. Keletas klaidų buvo nustatyta konvertavimo adresų simbolių
- lmdbg-stat: nepilnai skaityti linijos dabar ignoruojami, todėl yra ne daugiau teigti (3) ai, kai prašymas gali būti debugged žūsta li>.
- alternatyva įgyvendinimo parašyta awk buvo pašalintas.
Kas naujo versija 0.17.0:
- Ši versija prideda patobulinimų ir pataisų daug į man puslapiai, nauji pajėgumai lmdbg, lmdbg perspektyvoje, ir lmdbg-SYM ir nedideli pataisymai ir lmdbg-stat.
- lmdbg dabar meta įrankis, kuris gali padaryti daug daugiau dalykų, o ne tiesiog rasti Atminties nutekėjimas.
Kas naujo versija 0.15.1:
- registravimas calloc (3) Modły išjungtas glibc paremtos sistemos (Linux GNU / kFreeBSD, o gal kiti), nes lmdbg-paleisti nepavyksta ant jų.
- Nedideli švarios-ups, pataisymai ir patobulinimai. MK-configure & gt;. = 0,20 reikalingas pastato
Kas naujo versija 0.14.0:
- Nauji įrankiai: lmdbg-stat, lmdbg-grep ir lmdbg rūšiuoti rinkti ir analizuoti statistinę informaciją apie atminties paskirstymą.
- lmdbg-run: naujos galimybės lmdbg perspektyvoje:. -S -M Ir generuoti sutrumpintas stacktraces
- lmdbg-Sym:. Nauja galimybė -p už programos pavadinimą gauti iš lmdbg paleisti produkcijos
- nustatyti: "mkcmake testas" pašalina savo laikinuosius failus .
Komentarai nerastas