سؤال

ما تسرب الذاكرة كاشفات الناس كانت تجربة جيدة ؟

هنا هو ملخص إجابات حتى الآن:

Valgrind - الأجهزة إطار بناء ديناميكية أدوات التحليل.

سياج كهربائي - الأداة التي تعمل مع GDB

جبيرة - الشرح-مساعدة خفيفة الوزن ثابت التحقق

توهج رمز - هذا هو استكمال الأداء في الوقت الحقيقي و الذاكرة التعريف لويندوز .صافي المبرمجين من تطوير التطبيقات مع C++, C#, أو أي .NET Framework

انظر أيضا هذا ستاكوفيرفلوو بعد.

هل كانت مفيدة؟

المحلول

الثانية valgrind...و سأضيف سياج كهربائي.

نصائح أخرى

Valgrind لينكس هو إلى حد ما جيدة ، ليس لدي أي خبرة في ويندوز مع هذا.

إذا كان لديك المال: IBM Rational تنقية هي قوية للغاية في صناعة قوة الذاكرة تسرب الذاكرة الفساد كاشف C/C++.موجود ويندوز ، Solaris و لينكس.إذا كنت لينكس فقط أريد حل رخيص, الذهاب Valgrind.

Mudflap دول مجلس التعاون الخليجي!فإنه في الواقع يجمع يتحقق في الملف القابل للتنفيذ.فقط إضافة

-fmudflap -lmudflap

إلى أعلام دول الخليج.

الوبر (مشابهة جدا أداة مفتوحة المصدر تسمى جبيرة)

الجدير استخدام إذا كنت على لينكس باستخدام سي العمومية هو المدمج في كومة الذاكرة المؤقتة التصحيح رمز.لاستخدامه, رابط مع -lmcheck أو تعريف (و التصدير) MALLOC_CHECK_ متغير البيئة مع قيمة 1 أو 2 أو 3. على سي العمومية الدليل على مزيد من المعلومات.

هذا الوضع هو الأكثر فائدة للكشف عن ضعف-تحرر ، وغالبا ما يجد يكتب خارج تخصيص مساحة الذاكرة عند القيام مجانا.أنا لا أعتقد ذلك تقارير تسربت الذاكرة.

كان لي بعض الزيارات مع cppcheck, التي لا تحليل ثابت فقط.فهو مفتوح المصدر و لديه واجهة سطر الأوامر (لم تستخدم في أي وسيلة أخرى).

مؤلمة ولكن إذا كان لديك لاستخدام واحد..
أنصح DevPartner BoundsChecker جناح..هذا ما يقوله الناس في مكان العمل تستخدم لهذا الغرض.دفعت n الملكية..ليست مجانية.

لقد كان الحد الأدنى الحب لأي للكشف عن تسرب الذاكرة.عادة هناك عدد كبير جدا من ايجابيات كاذبة بالنسبة لهم أن يكون من أي استخدام.أنصح من beiong أقل تطفلا:

GlowCode

كومة الذاكرة المؤقتة التصحيح

Win32 التصحيح من تسرب الذاكرة لدي تجارب جيدة جدا مع القديم عادي CRT كومة الذاكرة المؤقتة التصحيح أن يأتي ليب مع Visual C.

في بناء تصحيح malloc (وآخرون) على إعادة تعريف _malloc_dbg (وآخرون) وهناك دعوات أخرى لاسترداد النتائج ، وهي كلها غير معروف إذا _DEBUG لم يتم تعيين.فإنه يضع كل أنواع الحدود حراس على كومة ، و يسمح لك diplay النتائج في أي وقت.

كان لي عدد قليل من ايجابيات كاذبة عندما كنت ويتينج بعض الوقت الروتينية التي افسدت مع مكتبة وقت تشغيل المخصصات حتى اكتشفت _CRT_BLOCK.

كان إنتاج أول DOS ثم وحدة تحكم Win32 والخدمات التي من شأنها أن تعمل من أي وقت مضى.بقدر ما أعرف أن هناك أي تسرب الذاكرة في مكان واحد على الأقل رمز تشغيل لمدة سنتين غير المراقب أمام الشاشة على جهاز الكمبيوتر فشل (على الرغم من أن الكمبيوتر كان على ما يرام!).

على ويندوز ، ولقد استخدمت البصرية للكشف عن تسرب.يدمج مع VC++, سهلة الاستخدام (مجرد تشمل رأس مجموعة LIB أن تجد ليب), مفتوحة المصدر, مجاني للاستخدام FTW.

في الجامعة عندما كنت تفعل معظم الأشياء تحت Unix Solaris اعتدت gdb.

ومع ذلك كنت أذهب مع valgrind تحت لينكس.

الجد من هذه الأدوات التجارية مغلقة المصدر تنقية أداة التي تم بيعها إلى شركة IBM ومن ثم إلى يونيكوم

Parasoft هو تأمين++ (المصدر مدونة الأجهزة) و valgrind (مفتوحة المصدر) هما حقيقية أخرى المنافسين.

التوافه:المؤلف الأصلي من تنقية ريد هاستينغز ، ذهب إلى العثور على نيتفليكس.

لا واحد ذكر رنة هو MSan, والتي هي قوية جدا.هو معتمد رسميا على لينكس فقط ، على الرغم من.

هذا السؤال ربما من العمر ، ولكن سوف أجيب على أي حال ربما جوابي سوف تساعد شخص للعثور على تسرب الذاكرة.

هذا هو بلدي المشروع - لقد وضعت على أنها رمز المصدر المفتوح:

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

ويندوز 32 و 64 بت منصات معتمدة ، الأصلي و وضع مختلط callstacks معتمدة.

.صافي جمع القمامة غير معتمد.(C++ cli هو gcnew أو C#'s new)

عالية الأداء أداة ، و لا يتطلب أي التكامل (إلا إذا كنت تريد حقا أن تدمج).

دليل كامل يمكن العثور عليها هنا:

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

لا تخافوا من كم فعلا بالكشف عن التسريبات فإنه من العملية الخاصة بك.فإنه يمسك تسرب الذاكرة من العملية برمتها.تحليل فقط أكبر التسريبات ، ليس كل شيء.

سوف الثانية valgrind خارجي أداة تسرب الذاكرة.
ولكن معظم المشاكل لقد كان في حل كنت دائما تستخدم داخليا بني الأدوات.في بعض الأحيان أدوات خارجية لديك الكثير من النفقات العامة أو معقدة للغاية لاقامة.

لماذا استخدام كتبت بالفعل رمز عندما يمكنك الكتابة الخاصة بك :)

أنا نكتة, ولكن في بعض الأحيان كنت بحاجة إلى شيء بسيط و هو أسرع في كتابة ذلك بنفسك.عادة أنا مجرد استبدال يدعو إلى malloc() مجانا() مع الوظائف التي تبقى أفضل المسار الذي تخصص ما.معظم مشاكلي يبدو أن أحدهم نسي مجانا و هذا يساعد على حل هذه المشكلة.

أنها حقا يتوقف على مكان التسرب ، و إذا علمت هذا, فإنك لن تحتاج إلى أي أدوات.ولكن إذا كان لديك فكرة أين تعتقد أنه تسريب, ثم وضع في الأجهزة ومعرفة ما إذا كان يساعدك.

لدينا CheckPointer أداة يمكن أن تفعل هذا من أجل GNU C 3/4, MS اللهجات ج ، غرينهيلز C.يمكن العثور على مشاكل إدارة الذاكرة التي Valgrind لا.

إذا التعليمات البرمجية الخاصة بك ببساطة التسريبات على الخروج CheckPointer سوف أقول لكم أين كل unfreed الذاكرة المخصصة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top