LMDBG είναι μια εφαρμογή που επιτρέπει την ανίχνευση μνήμης leaksand διπλό ελευθερώνει & nbsp?. Ωστόσο, σε αντίθεση με άλλους, LMDBG παράγει * ΠΛΗΡΗΣ * stacktracesand χωρίζει την καταγραφή από την ανάλυση thusallowing να αναλύσει μια εφαρμογή στο ανά μονάδα βάσης.
- lmdbg-τρέξιμο είναι ένα κύριο πρόγραμμα lmdbg. Τρέχει αίτηση και δημιουργεί ένα αρχείο καταγραφής (ή FIFO), όπου όλοι καλούνται malloc / calloc / realloc / δωρεάν / memalign / posix_memalign επικλήσεις είναι εγγεγραμμένοι με την είσοδο τους (byte μετράνε, δείκτης), έξοδος (δείκτης) και (!!! uniques χαρακτηριστικό !!!) ΠΛΗΡΕΣ STACKTRACE (δείκτες).
Παράδειγμα:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? Δοκιμές $ γάτα / test2.c
& Nbsp? & Nbsp? & Nbsp? & Nbsp? #include
& Nbsp? & Nbsp? & Nbsp? & Nbsp? int main ()
& Nbsp? & Nbsp? & Nbsp? & Nbsp? {
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? void * p1 = NULL?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? void * p2 = NULL?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? p1 = malloc (555)?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? P2 = realloc (Ρ2, 666)?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? P2 = realloc (Ρ2, 777)?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? P2 = realloc (Ρ2, 888)?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? return 0?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? }
& Nbsp? & Nbsp? & Nbsp? & Nbsp? $ Gcc -g -o -O0 _test2 δοκιμές / test2.c
& Nbsp? & Nbsp? & Nbsp? & Nbsp? $ Lmdbg-τρέξιμο -o _Αρχείο καταγραφής ./_test2
& Nbsp? & Nbsp? & Nbsp? & Nbsp? $ Γάτα _Αρχείο καταγραφής
& 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? $
Σημείωση: Πλήρης stacktrace σας επιτρέπει να αναλύσει την αίτησή σας, δηλαδή μπορείτε να εντοπίσετε τι μπλοκ / εξαρτήματα απαιτούν περισσότερη μνήμη από τους άλλους και γιατί. lmdbg-SYM είναι ένα πολύ σημαντικό εργαλείο για αυτό, δείτε παρακάτω.
- lmdbg-διαρροές αναλύει ένα αρχείο καταγραφής που δημιουργούνται από lmdbg-τρέξιμο και εξόδου όσα βρεθούν διαρροές μνήμης
Παράδειγμα:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? $ lmdbg-διαρροές _Αρχείο καταγραφής & 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 μετατρέπει τις διευθύνσεις με source.c: 999, αν είναι δυνατόν
Παράδειγμα (gdb (1) είναι σε δράση):
& Nbsp? & Nbsp? & Nbsp? & Nbsp? $ Lmdbg-SYM ./_test2 _Αρχείο καταγραφής
& 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? δοκιμών / 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-SYM -a ./_test2 _Αρχείο καταγραφής
& 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? δοκιμών / 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 - greps ή παραλείπει σύστημα διαρροές μνήμης βρέθηκε σε libc, 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 _Αρχείο καταγραφής ./_test2
& Nbsp? & Nbsp? & Nbsp? & Nbsp? Διαρροές μνήμης εντοπίστηκαν και αποθηκεύεται στο αρχείο "_Αρχείο καταγραφής»
& Nbsp? & Nbsp? & 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? δοκιμών / 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? 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? δοκιμών / test2.c: 8 κύρια
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? 0x8048584
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? 0x80484e7
& Nbsp? & Nbsp? & Nbsp? & Nbsp? $
Τι είναι καινούργιο σε αυτήν την έκδοση:
- lmdbg-SYM πλέον segfaults λόγω προβλημάτων με stacktrace (3).
- Μια πολύ απλούστερη και η σωστή μέθοδος μετατροπής διεύθυνση προστέθηκε.
- Υπήρξαν σημαντικές βελτιώσεις στην ταχύτητα οφείλεται σε βελτιστοποιήσεις με τον GDB.
- Σε lmdbg-τρέξιμο, glibc άγκιστρα malloc δεν χρησιμοποιούνται πλέον.
- το δικό του κωδικό lmdbg δεν περιλαμβάνεται στο stacktraces.
- Ένα νέο -Ν επιλογή προστέθηκε και η επιλογή -v έλαβε μια μικρή λύση.
- lmdbg-STAT έλαβε διορθώσεις για ένα dereference NULL που εμφανίστηκε εάν μια δωρεάν (3) ή realloc (3) stacktrace ήταν χωρίς την κατάλληλη malloc / realloc (3) stacktrace.
- Υπήρχαν και άλλες μικρές διορθώσεις και βελτιώσεις, οι βελτιώσεις στις δοκιμές παλινδρόμησης, καθώς και βελτιώσεις στην stacktrace (3).
Τι είναι καινούργιο στην έκδοση 1.1.0:.
- Μια σταθερή σε δοκιμές παλινδρόμησης
- lmdbg-τρέξιμο: Οι μηδενικές διευθύνσεις αφαιρούνται από stacktraces δημιουργούνται από backtrace glibc του (3) .
- Αυτή η έκδοση διορθώνει ισχυρίζεται σε lmdbg-stat (1).
- Διπλή & quot? 0x & quot? θέματα στο & quot? πληροφορίες ενότητα & quot? καθορίστηκαν (δει στο NetBSD).
- backtrace (3) από libexecinfo (αν υπάρχει) χρησιμοποιείται αντί της ενσωματωμένης εφαρμογής.
- lmdbg-SYM:. Μερικά σφάλματα που καθορίζονται στην μετατροπή των διευθύνσεων στα σύμβολα
- lmdbg-stat: ατελώς διαβάσει τις γραμμές τώρα αγνοούνται, οπότε εκεί δεν είναι τίποτα περισσότερο διεκδικούν (3) s όταν μια εφαρμογή που debugged σκοτώνεται .
- Μια εναλλακτική εφαρμογή γραμμένη σε awk αφαιρέθηκε.
Τι είναι καινούργιο στην έκδοση 0.17.0:
- Αυτή η έκδοση προσθέτει πολλές βελτιώσεις και διορθώσεις σε σελίδες manual, νέες δυνατότητες σε lmdbg, lmdbg-τρέξιμο, και lmdbg-SYM, και μικρές διορθώσεις για lmdbg-stat.
- lmdbg είναι τώρα μια μετα-εργαλείο, το οποίο είναι σε θέση να κάνει πολλά περισσότερα πράγματα, όχι απλά να βρείτε διαρροές μνήμης.
Τι είναι καινούργιο στην έκδοση 0.15.1:
- Η καταγραφή της calloc (3) επικλήσεις είναι απενεργοποιημένη σε Συστήματα glibc-based (Linux, το GNU / kFreeBSD, και ίσως και άλλοι), γιατί lmdbg επιχείρηση αποτυγχάνει σε αυτούς.
- Μικρά καθαρό-ups, διορθώσεις και βελτιώσεις. mk-Ρύθμιση & gt?. = 0,20 απαιτείται για την κατασκευή
Τι είναι καινούργιο στην έκδοση 0.14.0:
- Νέα εργαλεία: lmdbg-stat, lmdbg-grep και lmdbg-ταξινόμησης για τη συλλογή και την ανάλυση των στατιστικών πληροφοριών σχετικά με τις κατανομές μνήμης.
- lmdbg επιχείρηση: νέες δυνατότητες για lmdbg-τρέξιμο:. -S Και -Μ για τη δημιουργία μειωθεί stacktraces
- lmdbg-SYM:. Νέα επιλογή-p για την απόκτηση όνομα του προγράμματος από την έξοδο lmdbg επιχείρηση του
- fix: «δοκιμή mkcmake» καταργεί τα προσωρινά αρχεία του .
Τα σχόλια δεν βρέθηκε