.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2012, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH mtrace 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم mtrace, muntrace \- تتبع malloc .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBvoid mtrace(void);\fP \fBvoid muntrace(void);\fP .fi .SH الوصف الدالة \fBmtrace\fP() تُثبّت دوال ربط لدوال تخصيص الذاكرة (\fBmalloc\fP(3), \fBrealloc\fP(3) \fBmemalign\fP(3), \fBfree\fP(3)). تُسجّل دوال الربط هذه معلومات تتبع حول تخصيص الذاكرة وإلغاء تخصيصها. يمكن استخدام معلومات التتبع لاكتشاف تسريبات الذاكرة ومحاولات تحرير ذاكرة غير مخصصة في برنامج. .P الدالة \fBmuntrace\fP() تُعطّل دوال الربط التي ثبّتها \fBmtrace\fP()، بحيث لا تُسجّل معلومات التتبع لدوال تخصيص الذاكرة بعد الآن. إذا لم تُثبّت دوال ربط بنجاح بواسطة \fBmtrace\fP()، فلا تفعل \fBmuntrace\fP() شيئًا. .P عند استدعاء \fBmtrace\fP()، تتحقق من قيمة متغير البيئة \fBMALLOC_TRACE\fP، الذي يجب أن يحتوي على اسم مسار ملف تُسجّل فيه معلومات التتبع. إذا فُتح اسم المسار بنجاح، يُقتطع إلى طول صفري. .P إذا لم يُضبط \fBMALLOC_TRACE\fP، أو كان اسم المسار الذي يُحدّده غير صالح أو غير قابل للكتابة، فلا تُثبّت دوال ربط، ولا يكون لـ \fBmtrace\fP() أي تأثير. في برامج set\-user\-ID و set\-group\-ID، يُتجاهل \fBMALLOC_TRACE\fP، ولا يكون لـ \fBmtrace\fP() أي تأثير. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBmtrace\fP()، \fBmuntrace\fP() T} سلامة الخيوط غير آمن لتعدد الخيوط (MT\-Unsafe) .TE .\" FIXME: The marking is different from that in the glibc manual, .\" markings in glibc manual are more detailed: .\" .\" mtrace: MT-Unsafe env race:mtrace const:malloc_hooks init .\" muntrace: MT-Unsafe race:mtrace const:malloc_hooks locale .\" .\" But there is something wrong in glibc manual, for example: .\" glibc manual says muntrace should have marking locale because it calls .\" fprintf(), but muntrace does not execute area which cause locale problem. .SH المعايير GNU. .SH ملاحظات في الاستخدام العادي، تُستدعى \fBmtrace\fP() مرة واحدة في بداية تنفيذ برنامج، ولا تُستدعى \fBmuntrace\fP() أبدًا. .P مخرجات التتبع الناتجة بعد استدعاء \fBmtrace\fP() نصية، لكنها غير مصممة لتكون قابلة للقراءة البشرية. توفر مكتبة GNU C سكربت Perl، \fBmtrace\fP(1)، الذي يُفسّر سجل التتبع ويُنتج مخرجات قابلة للقراءة البشرية. للحصول على أفضل النتائج، يجب ترجمة البرنامج المُتتبّع مع تمكين التصحيح، بحيث تُسجّل معلومات أرقام الأسطر في الملف التنفيذي. .P التتبع الذي تُجريه \fBmtrace\fP() يُسبّب عقوبة أداء (إذا كان \fBMALLOC_TRACE\fP يُشير إلى اسم مسار صالح وقابل للكتابة). .SH العلل معلومات رقم السطر التي يُنتجها \fBmtrace\fP(1) ليست دقيقة دائمًا: قد تُشير مراجع رقم السطر إلى السطر السابق أو التالي (غير الفارغ) من شفرة المصدر. .SH أمثلة جلسة الصدفة أدناه تُوضّح استخدام الدالة \fBmtrace\fP() والأمر \fBmtrace\fP(1) في برنامج به تسريبات ذاكرة في موقعين مختلفين. يستخدم العرض التوضيحي البرنامج التالي: .P .in +4n .\" SRC BEGIN (t_mtrace.c) $ \fBcat t_mtrace.c\fP .EX #include #include #include \& int main(void) { mtrace(); \& for (unsigned int j = 0; j < 2; j++) malloc(100); /* لم يُحرّر أبدًا\-\-تسريب ذاكرة */ \& calloc(16, 16); /* لم يُحرّر أبدًا\-\-تسريب ذاكرة */ exit(EXIT_SUCCESS); } .EE .\" SRC END .in .P عند تشغيل البرنامج كما يلي، نرى أن \fBmtrace\fP() شخصت تسريبات ذاكرة في موقعين مختلفين في البرنامج: .P .in +4n .EX $ \fBcc \-g t_mtrace.c \-o t_mtrace\fP $ \fBexport MALLOC_TRACE=/tmp/t\fP $ \fB./t_mtrace\fP $ \fBmtrace ./t_mtrace $MALLOC_TRACE\fP ذاكرة غير محررة: \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- العنوان الحجم المستدعي 0x084c9378 0x64 at /home/cecilia/t_mtrace.c:12 0x084c93e0 0x64 at /home/cecilia/t_mtrace.c:12 0x084c9448 0x100 at /home/cecilia/t_mtrace.c:16 .EE .in .P الرسالتان الأوليتان حول الذاكرة غير المحررة تتوافقان مع استدعاءَي \fBmalloc\fP(3) داخل حلقة \fIfor\fP. الرسالة الأخيرة تتوافق مع استدعاء \fBcalloc\fP(3) (الذي يستدعي بدوره \fBmalloc\fP(3)). .SH "انظر أيضًا" \fBmtrace\fP(1), \fBmalloc\fP(3), \fBmalloc_hook\fP(3), \fBmcheck\fP(3) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .