ανιχνευτές διαρροής μνήμης για C;

ψήφοι
30

Ποια μνήμη διαρροή ανιχνευτές οι άνθρωποι είχαν μια καλή εμπειρία με;

Εδώ είναι μια περίληψη των απαντήσεων μέχρι τώρα:

Valgrind - Όργανα πλαίσιο για τη δημιουργία δυναμικών εργαλείων ανάλυσης.

Ηλεκτρικό φράχτη - Ένα εργαλείο που λειτουργεί με GDB

Νάρθηκας - Σχολιασμός-Assisted Ελαφρύ Στατική Έλεγχος

Λάμψη Κωδικός - Αυτό είναι ένα πλήρες σε πραγματικό χρόνο τις επιδόσεις και τη μνήμη profiler για Windows και .NET προγραμματιστές που αναπτύσσουν εφαρμογές με ++, C, C #, ή οποιασδήποτε του .NET Framework

Επίσης, δείτε αυτό μετά Stackoverflow .

Δημοσιεύθηκε 10/09/2008 στις 03:47
χρήστη
Σε άλλες γλώσσες...                            


17 απαντήσεις

ψήφοι
11

Valgrind στο Linux είναι αρκετά καλή? Δεν έχω καμία εμπειρία στα Windows με αυτό.

Απαντήθηκε 10/09/2008 στις 03:50
πηγή χρήστη

ψήφοι
1

Είχα ελάχιστη αγάπη για τυχόν ανιχνευτές διαρροής μνήμης. Συνήθως υπάρχουν πάρα πολλά ψευδώς θετικά γι 'αυτούς να είναι για οποιαδήποτε χρήση. Θα ήθελα να συστήσω αυτά τα δύο ως beiong λιγότερο παρεμβατική:

GlowCode

εντοπισμού σφαλμάτων σωρού

Απαντήθηκε 10/09/2008 στις 03:52
πηγή χρήστη

ψήφοι
2

χνούδι (πολύ παρόμοιο εργαλείο ανοικτού κώδικα που ονομάζεται νάρθηκας )

Απαντήθηκε 10/09/2008 στις 03:59
πηγή χρήστη

ψήφοι
17

δεύτερη η valgrind ... και εγώ θα προσθέσω ηλεκτρικό φράχτη .

Απαντήθηκε 10/09/2008 στις 04:01
πηγή χρήστη

ψήφοι
2

Επώδυνη αλλά αν έπρεπε να χρησιμοποιήσετε ένα ..
Θα ήθελα να συστήσω το DevPartner BoundsChecker σουίτα .. αυτό είναι που οι άνθρωποι στο χώρο εργασίας μου χρήση για το σκοπό αυτό. Καταβάλλονται n ιδιόκτητο .. όχι δωρεάν.

Απαντήθηκε 10/09/2008 στις 04:19
πηγή χρήστη

ψήφοι
0

Στο πανεπιστήμιο, όταν έκανα περισσότερα πράγματα κάτω από το Unix Solaris χρησιμοποίησα gdb .

Ωστόσο, θα ήθελα να πάω με valgrind στο Linux.

Απαντήθηκε 10/09/2008 στις 04:46
πηγή χρήστη

ψήφοι
-1

Εγώ θα δεύτερη η valgrind ως ένα εξωτερικό εργαλείο για διαρροές μνήμης.
Όμως, για τα περισσότερα από τα προβλήματα που είχα να λύσει έχω χρησιμοποιήσει πάντα εσωτερικά ενσωματωμένο εργαλεία. Μερικές φορές τα εξωτερικά εργαλεία έχουν πάρα πολύ γενικά ή είναι υπερβολικά περίπλοκη για να δημιουργήσει.

Γιατί να χρησιμοποιήσετε το ήδη γράψει κώδικα, όταν μπορείτε να γράψετε τη δική σας :)

Αστειεύομαι, αλλά μερικές φορές χρειάζεται κάτι απλό και είναι πιο γρήγορα για να το γράψετε μόνοι σας. Συνήθως Απλά αντικαταστήστε κλήσεις προς malloc () και χωρίς () με λειτουργίες που κρατούν καλύτερο κομμάτι της που διαθέτει αυτό. Τα περισσότερα από τα προβλήματα μου φαίνονται να είναι κάποιος ξέχασε να απελευθερώσει και αυτό βοηθά στην επίλυση αυτού του προβλήματος.

Εξαρτάται πραγματικά από όπου η διαρροή είναι, και αν ήξερε ότι, τότε δεν θα χρειάζεται κανένα εργαλείο. Αλλά αν έχετε κάποια εικόνα για το πού νομίζετε ότι είναι διαρροή, μετά βάλτε το δικό σας όργανα και να δούμε αν αυτό σας βοηθά.

Απαντήθηκε 10/09/2008 στις 17:38
πηγή χρήστη

ψήφοι
1

Για Win32 εντοπισμού σφαλμάτων των διαρροών μνήμης είχα πολύ καλές εμπειρίες με το απλό παλιό CRT εντοπισμού σφαλμάτων σωρού, που έρχεται ως lib με το Visual C.

Σε μια malloc εντοπισμού σφαλμάτων (κ.ά.) να επαναπροσδιοριστεί ως _malloc_dbg (κ.ά.) και υπάρχουν και άλλες κλήσεις για να ανακτήσετε τα αποτελέσματα, τα οποία είναι όλα απροσδιόριστο αν _DEBUG δεν έχει οριστεί. Θέτει όλα τα είδη των συνοριακών φρουρών στο σωρό, και σας επιτρέπει να diplay τα αποτελέσματα ανά πάσα στιγμή.

Είχα μερικά ψευδή θετικά όταν ήμουν Witting κάποια στιγμή ρουτίνες που μπέρδεμα με τις βιβλιοθήκη κατανομές χρόνου εκτέλεσης έως ότου ανακάλυψα _CRT_BLOCK.

Έπρεπε να παράγουν τα πρώτα DOS, τότε Win32 κονσόλα και τις υπηρεσίες που θα τρέχει για πάντα. Απ 'όσο ξέρω δεν υπάρχουν διαρροές μνήμης, και τουλάχιστον ένα μέρος του κώδικα λειτουργίας για δύο χρόνια χωρίς επίβλεψη πριν από την οθόνη στον υπολογιστή απέτυχε (αν ο υπολογιστής ήταν μια χαρά!).

Απαντήθηκε 11/09/2008 στις 03:25
πηγή χρήστη

ψήφοι
0

Ο παππούς από αυτά τα εργαλεία είναι το εμπορικό, κλειστού κώδικα καθαρίζονται εργαλείο, το οποίο πωλήθηκε στην IBM και στη συνέχεια να UNICOM

Parasoft του Ασφαλίστε ++ (πηγαίος κώδικας οργάνων) και valgrind (open source) είναι οι δύο άλλοι πραγματικοί ανταγωνιστές.

Trivia: ο αρχικός συντάκτης καθαρίζονται, Reed Hastings, πήγε για να βρεθεί NetFlix.

Απαντήθηκε 25/09/2008 στις 20:13
πηγή χρήστη

ψήφοι
3

Εάν έχετε τα χρήματα: IBM Rational Καθαρίστε είναι ένα εξαιρετικά ισχυρό διαρροή μνήμης βιομηχανία αντοχής και της μνήμης ανιχνευτή της διαφθοράς για την C / C ++. Υπάρχει για Windows, Solaris και Linux. Αν είστε linux μόνο και θέλουν μια φθηνή λύση, πάμε για Valgrind.

Απαντήθηκε 25/09/2008 στις 20:37
πηγή χρήστη

ψήφοι
3

Λασπωτήρα για gcc! Συντάσσει πραγματικά τους ελέγχους στο εκτελέσιμο. Απλά πρόσθεσε

-fmudflap -lmudflap

με σημαίες gcc σας.

Απαντήθηκε 10/11/2008 στις 00:15
πηγή χρήστη

ψήφοι
1

Στα Windows, έχω χρησιμοποιήσει Ανιχνευτής Visual διαρροών . Ενσωματώνεται με VC ++, εύκολο στη χρήση (μόνο περιλαμβάνει μια κεφαλίδα και που LIB για να βρει το lib), ανοιχτού κώδικα, ελεύθερη να χρησιμοποιήσει FTW.

Απαντήθηκε 11/11/2008 στις 13:45
πηγή χρήστη

ψήφοι
2

Επίσης, αξίζει να χρησιμοποιείτε αν είστε σε Linux χρησιμοποιώντας glibc είναι το ενσωματωμένο κώδικα εντοπισμού σφαλμάτων σωρού. Για να το χρησιμοποιήσετε, σύνδεση με -lmcheck ή να ορίσετε (και εξαγωγή) η MALLOC_CHECK_ μεταβλητή περιβάλλοντος με την τιμή 1, 2 ή 3. Το εγχειρίδιο glibc παρέχει περισσότερες πληροφορίες.

Αυτή η λειτουργία είναι πολύ χρήσιμη για την ανίχνευση διπλής ελευθερώνει, και βρίσκει συχνά γράφει έξω από την διατεθεί περιοχή μνήμης όταν κάνει μια ελεύθερη. Δεν νομίζω ότι οι εκθέσεις που διέρρευσαν μνήμη.

Απαντήθηκε 11/11/2008 στις 18:22
πηγή χρήστη

ψήφοι
-1

Μας CheckPointer εργαλείο μπορεί να κάνει αυτό για το GNU C 3/4 και, MS διαλέκτους της C, και Greenhills C. Μπορεί να βρείτε τα προβλήματα διαχείρισης μνήμης που Valgrind δεν μπορεί.

Αν κωδικό σας διαρροές απλά, κατά την έξοδο CheckPointer θα σας πω πού διατέθηκαν όλα τα unfreed μνήμη.

Απαντήθηκε 26/06/2012 στις 06:36
πηγή χρήστη

ψήφοι
2

Είχα αρκετό χτυπήματα με cppcheck , το οποίο κάνει μόνο στατική ανάλυση. Είναι open source και έχει μια διεπαφή γραμμής εντολών (εγώ δεν το χρησιμοποιούν με οποιοδήποτε άλλο τρόπο).

Απαντήθηκε 18/09/2012 στις 14:28
πηγή χρήστη

ψήφοι
0

Κανείς δεν αναφέρθηκε MSAN κλαγγή του , το οποίο είναι αρκετά ισχυρό. Είναι επίσημα υποστηρίζεται σε Linux μόνο, όμως.

Απαντήθηκε 07/10/2015 στις 04:47
πηγή χρήστη

ψήφοι
0

Αυτή η ερώτηση ίσως παλιά, αλλά εγώ θα απαντήσω έτσι κι αλλιώς - ίσως η απάντησή μου θα βοηθήσει κάποιον να βρείτε διαρροές μνήμης τους.

Αυτό είναι το δικό μου έργο - το έχω βάλει ως ανοικτού πηγαίου κώδικα:

https://sourceforge.net/projects/diagnostic/

Τα Windows 32 & 64-bit πλατφόρμες που υποστηρίζονται, οι μητρική και μικτές callstacks λειτουργία υποστηρίζεται.

.NET συλλογή σκουπιδιών δεν υποστηρίζεται. (Gcnew C ++ CLI ή C # 's νέα)

Το εργαλείο υψηλής απόδοσης, και δεν απαιτεί την ένταξη (εκτός αν θέλετε πραγματικά να το ενσωματώσουν).

Πλήρεις οδηγίες μπορείτε να βρείτε εδώ:

http://diagnostic.sourceforge.net/index.html

Μην φοβάστε για το πόσο ανιχνεύει πραγματικότητα διαρροές ότι η διαδικασία σας. Πιάνει διαρροές μνήμης από την όλη διαδικασία. Αναλύστε μόνο μεγαλύτερες διαρροές, δεν είναι όλα.

Απαντήθηκε 03/11/2016 στις 15:43
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more