وLMDBG هو أحد التطبيقات التي تسمح الكشف عن ذاكرة leaksand تفرج مزدوجة على & nbsp؛. ومع ذلك، خلافا للآخرين، LMDBG يولد * كامل * stacktracesand يفصل قطع الأشجار من تحليل thusallowing لتحليل التطبيق على أساس لكل وحدة.
- lmdbg التي تديرها هو أداة lmdbg الرئيسية. تشغيله تطبيق ويقوم بإنشاء ملف السجل (أو FIFO) حيث دعا جميع malloc / calloc / realloc / / memalign / الدعاء posix_memalign تم تسجيلها مع مدخلاتها (بايت عد، المؤشر) مجانا، خرج (المؤشر) و (!!! الغرائب ميزة !!!) يشبع STACKTRACE (مؤشرات).
على سبيل المثال:
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ اختبارات $ القط / test2.c
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ # تشمل
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ كثافة العمليات الرئيسية ()
على & 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 = 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؛ العودة 0؛
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ }
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ $ دول مجلس التعاون الخليجي -O0 -g -o _test2 الاختبارات / test2.c
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ $ lmdbg التي تديرها -o _log ./_test2
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ $ القط _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؛ $
ملاحظة: stacktrace كامل يسمح لك لتحليل التطبيق الخاص بك، أي يمكنك الكشف عن ما تتطلب كتل / مكونات ذاكرة أكثر من الآخرين، والسبب في ذلك. lmdbg-SYM هو أداة مهمة جدا لهذا، انظر أدناه.
- lmdbg-التسريبات تحليلات ملف سجل الناتجة عن lmdbg التي تديرها والناتج عن تسرب الذاكرة وجدت
على سبيل المثال:
على & nbsp؛ على & nbsp؛ على & nbsp؛ على & nbsp؛ $ lmdbg-التسريبات _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 تحويل عناوين لsource.c: 999 إذا كان من الممكن
مثال (جدب (1) في العمل):
على & 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؛ اختبارات / 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 _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؛ اختبارات / 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 ++ المحكمة الخاصة بلبنان الخ انظر الاختبارات / 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؛ 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 لم يعد خطأ التقسيم بسبب مشاكل مع stacktrace (3).
تمت إضافة طريقة أبسط من ذلك بكثير والصحيح عنوان التحويل.
كانت هناك speedups كبيرة بسبب التحسينات لجدب.
في lmdbg التي تديرها، وسي العمومية السنانير malloc لم تعد تستخدم.
لم يتم تضمين كود lmdbg نفسه في stacktraces.
تمت إضافة خيار جديد -n، وحصل الخيار -v إصلاح طفيفة.
تلقى lmdbg-ستات إصلاحات لdereference NULL التي ظهرت إذا كان حر (3) أو realloc (3) stacktrace دون malloc المناسبة / realloc (3) stacktrace.
كانت هناك إصلاحات أخرى الطفيفة والتحسينات، والتحسينات في اختبارات الانحدار، والتحسينات في stacktrace (3).
ما هو الجديد في الإصدار 1.1.0:
والإصلاح في اختبارات الانحدار.
تتم إزالة عناوين الصفر من stacktraces التي تولدها المتتبع الخلفي سي العمومية في (3): lmdbg التي تديرها.
هذا حل يؤكد في lmdbg-القانون الأساسي (1).
ضعف ومثل، 0X ومثل. القضايا في ومثل، معلومات القسم ومثل. تم إصلاحها (رأيت على نت بي).
المتتبع الخلفي (3) من libexecinfo يستخدم (إن وجدت) بدلا من تنفيذ المدمج في.
lmdbg-SYM: تم إصلاح بعض الخلل في تحويل عناوين لحرف.
lmdbg-القانون الأساسي: غير كامل يتم تجاهل الآن خطوط المقروءة، لذلك لا أكثر هناك تأكيد (3) ليالي عندما يقتل تطبيق يتم تصحيحه.
تمت إزالة تطبيق بديل كتب في AWK.
ما هو الجديد في الإصدار 0.17.0:
هذا الإصدار يضيف الكثير من التحسينات والإصلاحات في صفحات اليدوية، وقدرات جديدة في lmdbg، lmdbg التي تديرها، وlmdbg-SYM، وإصلاحات طفيفة لlmdbg-القانون الأساسي.
lmdbg هو الآن أداة الفوقية التي هي قادرة على القيام العديد من الأشياء، وليس مجرد العثور على تسرب الذاكرة.
ما هو الجديد في الإصدار 0.15.1:
تسجيل من calloc (3) تم تعطيل الدعاء على النظم القائمة سي العمومية (لينكس، جنو / kFreeBSD، وربما غيرها) لأن lmdbg تديرها يفشل عليها.
الطفيفة عمليات التنظيف، والحلول، والتحسينات. مطلوب = 0.20 لبناء، MK-تكوين وGT.
ما هو الجديد في الإصدار 0.14.0:
أدوات جديدة: lmdbg-القانون الأساسي، lmdbg-البقرى وlmdbg الفرز لجمع وتحليل المعلومات الإحصائية حول تخصيص الذاكرة.
lmdbg التي تديرها: خيارات جديدة لlmdbg التي تديرها: -S و-M لتوليد stacktraces تقصير.
lmdbg-SYM: -p خيار جديد للحصول على اسم البرنامج من انتاج lmdbg التي تديرها و.
إصلاح: 'اختبار mkcmake "يزيل الملفات المؤقتة.
لم يتم العثور على التعليقات