
نسخة لينكس من أداة ProcDump Sysinternals
ProcDump هي إعادة تصور لأداة ProcDump الكلاسيكية من مجموعة أدوات Sysinternals لأنظمة Windows. توفر ProcDump طريقة مناسبة لمطوري Linux و Mac لإنشاء تفريغ أساسي (core dumps) لتطبيقاتهم بناءً على محفزات الأداء. ProcDump for Linux and Mac هي جزء من Sysinternals.

gdb >= 7.6.1يرجى الاطلاع على تعليمات التثبيت هنا.
يرجى الاطلاع على تعليمات البناء هنا.
تغيير جذري مع إصدار ProcDump 1.3 تم الآن محاذاة المفاتيح مع إصدار Windows من ProcDump. يرجى ملاحظة أن إصدار Mac يحتوي حالياً على مجموعة محدودة من المحفزات.
Capture Usage:
procdump [-n Count]
[-s Seconds]
[-c|-cl CPU_Usage]
[-m|-ml Commit_Usage1[,Commit_Usage2...]]
[-gcm [<GCGeneration>: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]]
[-gcgen Generation]
[-restrack [nodump]]
[-sr Sample_Rate]
[-tc Thread_Threshold]
[-fc FileDescriptor_Threshold]
[-sig Signal_Number1[,Signal_Number2...]]
[-e]
[-f Include_Filter,...]
[-fx Exclude_Filter]
[-mc Custom_Dump_Mask]
[-pf Polling_Frequency]
[-o]
[-log syslog|stdout]
{
{{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]}
}
Options:
-n عدد مرات التفريغ التي سيتم كتابتها قبل الخروج.
-s الثواني المتتالية قبل كتابة التفريغ (الافتراضي هو 10).
-c عتبة CPU التي يتم تجاوزها لإنشاء تفريغ للعملية.
-cl عتبة CPU التي يتم النزول تحتها لإنشاء تفريغ للعملية.
-m عتبة (عتبات) استهلاك الذاكرة (MB) التي يتم تجاوزها لإنشاء تفريغ.
-ml عتبة (عتبات) استهلاك الذاكرة (MB) التي يتم النزول تحتها لإنشاء تفريغ.
-gcm [.NET] عتبة (عتبات) ذاكرة GC (MB) التي يتم تجاوزها لإنشاء تفريغ للجيل أو الكومة المحددة (الافتراضي هو إجمالي استخدام ذاكرة .NET).
-gcgen [.NET] إنشاء تفريغ عند بدء وانتهاء جمع القمامة للجيل المحدد.
-restrack تفعيل تتبع تسرب الذاكرة (عائلة دوال malloc). إذا استُخدم بدون محفزات أخرى، استخدم 't' لأخذ تقرير restrack يدوياً. عند استخدامه مع محفزات أخرى، يمكن استخدام الخيار 'nodump' لمنع توليد التفريغ وإنتاج تقارير restrack فقط.
-sr معدل العينة عند استخدام -restrack.
-tc عتبة عدد الخيوط التي يتم تجاوزها لإنشاء تفريغ للعملية.
-fc عتبة عدد واصفات الملفات التي يتم تجاوزها لإنشاء تفريغ للعملية.
-sig قائمة مفصولة بفواصل بأرقام الإشارات التي ينتج عنها تفريغ للعملية عند حدوث أي إشارة.
-e [.NET] إنشاء تفريغ عند مواجهة العملية لاستثناء.
-f تصفية (تضمين) على محتوى استثناءات .NET (مفصولة بفواصل). يتم دعم أحرف البدل (*).
-fx تصفية (استبعاد) على محتوى مكدسات الاستدعاء لـ -restrack. يتم دعم أحرف البدل (*).
-mc قناع تفريغ أساسي مخصص (بالنظام الست عشري) يشير إلى الذاكرة التي يجب تضمينها في التفريغ الأساسي. رجاءً راجع 'man core' (/proc/[pid]/coredump_filter) للاطلاع على الخيارات المتاحة.
-pf تردد الاقتراع.
-o الكتابة فوق ملف التفريغ الموجود.
-log كتابة تتبع موسع لـ ProcDump إلى تيار الإخراج المحدد (syslog أو stdout).
-w انتظار إطلاق العملية المحددة إذا لم تكن قيد التشغيل.
-pgid معرف العملية المحدد يشير إلى معرف مجموعة عمليات.
يقوم المفتاح -restrack بتفعيل تتبع الموارد، مما يسمح بمراقبة والإبلاغ عن أي تخصيصات للموارد لم يتم تحريرها في وقت توليد التفريغ الأساسي. تُحفظ النتائج في ملف بامتداد '.restrack'. حالياً، يتم تتبع وظائف تخصيص/إلغاء تخصيص الموارد التالية:
التخصيص:
إلغاء التخصيص:
لا يقوم إصدار Mac حالياً بتنفيذ تتبع الموارد.
جميع الأمثلة التالية تستهدف عملية برقم تعريف (pid) == 1234
سيقوم ما يلي بإنشاء تفريغ أساسي فوراً.
sudo procdump 1234
سيقوم ما يلي بإنشاء 3 تفريغات أساسية بفاصل زمني 10 ثوانٍ.
sudo procdump -n 3 1234
سيقوم ما يلي بإنشاء 3 تفريغات أساسية بفاصل زمني 5 ثوانٍ.
sudo procdump -n 3 -s 5 1234
سيقوم ما يلي بإنشاء تفريغ أساسي في كل مرة يصل فيها استخدام CPU للعملية إلى >= 65%، حتى 3 مرات، مع فاصل زمني لا يقل عن 10 ثوانٍ بين كل تفريغ.
sudo procdump -c 65 -n 3 1234
سيقوم ما يلي بإنشاء تفريغ أساسي في كل مرة يصل فيها استخدام CPU للعملية إلى >= 65%، حتى 3 مرات، مع فاصل زمني لا يقل عن 5 ثوانٍ بين كل تفريغ.
sudo procdump -c 65 -n 3 -s 5 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عندما يكون استخدام CPU خارج النطاق [10,65].
sudo procdump -cl 10 -c 65 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عندما يكون استخدام CPU >= 65% أو استخدام الذاكرة >= 100 ميجابايت.
sudo procdump -c 65 -m 100 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عندما يكون استخدام الذاكرة >= 100 ميجابايت، يليه تفريغ آخر عندما يكون استخدام الذاكرة >= 200 ميجابايت.
sudo procdump -m 100,200 1234
سيقوم ما يلي بإنشاء تقرير تسرب ذاكرة (بدون تفريغات) في كل مرة يضغط فيها المستخدم على 't':
sudo procdump -restrack 1234
سيقوم ما يلي بإنشاء 3 تقارير تسرب ذاكرة (بدون تفريغات) بفاصل زمني 5 ثوانٍ:
sudo procdump -n 3 -s 5 -restrack nodump 1234
سيقوم ما يلي بإنشاء تفريغ أساسي وتقرير تسرب ذاكرة عندما يكون استخدام الذاكرة >= 100 ميجابايت
sudo procdump -m 100 -restrack 1234
سيقوم ما يلي بإنشاء تقرير تسرب ذاكرة (بدون تفريغات) عندما يكون استخدام الذاكرة >= 100 ميجابايت
sudo procdump -m 100 -restrack nodump 1234
سيقوم ما يلي بإنشاء تفريغ أساسي وتقرير تسرب ذاكرة عندما يكون استخدام الذاكرة >= 100 ميجابايت عن طريق أخذ عينة من كل تخصيص ذاكرة عاشر.
sudo procdump -m 100 -restrack -sr 10 1234
سيقوم ما يلي بإنشاء تفريغ أساسي وتقرير تسرب ذاكرة عندما يكون استخدام الذاكرة >= 100 ميجابايت واستبعاد أي مكدسات استدعاء تحتوي على إطارات تحتوي على السلسلة "cache" فيها
sudo procdump -m 100 -restrack -fx *cache* 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عندما يكون إجمالي استخدام ذاكرة .NET >= 100 ميجابايت، يليه تفريغ آخر عندما يكون استخدام الذاكرة >= 200 ميجابايت.
sudo procdump -gcm 100,200 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عندما يكون استخدام ذاكرة .NET للجيل 1 >= 1 ميجابايت، يليه تفريغ آخر عندما يكون استخدام الذاكرة >= 2 ميجابايت.
sudo procdump -gcm 1:1,2 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عندما يكون استخدام ذاكرة كومة الكائنات الكبيرة (Large Object Heap) في .NET >= 100 ميجابايت، يليه تفريغ آخر عندما يكون استخدام الذاكرة >= 200 ميجابايت.
sudo procdump -gcm LOH:100,200 1234
سيقوم ما يلي بإنشاء تفريغ أساسي في بداية ونهاية جمع القمامة للجيل 1 في .NET.
sudo procdump -gcgen 1
سيقوم ما يلي بإنشاء تفريغ أساسي في الدليل /tmp فوراً.
sudo procdump 1234 /tmp
سيقوم ما يلي بإنشاء تفريغ أساسي في الدليل الحالي باسم dump_0.1234. إذا تم استخدام -n، سيتم تسمية الملفات dump_0.1234, dump_1.1234 وهكذا.
sudo procdump 1234 dump
سيقوم ما يلي بإنشاء تفريغ أساسي عند حدوث SIGSEGV.
sudo procdump -sig 11 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عند حدوث SIGSEGV حيث يحتوي التفريغ الأساسي على الخرائط الخاصة المجهولة (anonymous private mappings) فقط.
sudo procdump -mc 1 -sig 11 1234
سيقوم ما يلي بإنشاء تفريغ أساسي عندما يرمي تطبيق .NET الهدف استثناء System.InvalidOperationException
sudo procdump -e -f System.InvalidOperationException 1234
يدعم مرشح التضمين المطابقة الجزئية وأحرف البدل، لذا فإن ما يلي سينشئ تفريغاً أساسياً أيضاً لاستثناء System.InvalidOperationException
sudo procdump -e -f InvalidOperation 1234
أو
sudo procdump -e -f "*Invali*Operation*" 1234
يمكن استخدام جميع الخيارات أيضاً مع
-w، لانتظار أي عملية بالاسم المعطى.
ينتظر ما يلي عملية باسم my_application وينشئ تفريغاً أساسياً فور العثور عليها.
sudo procdump -w my_application
إذا كنت مهتماً بإصلاح المشكلات والمساهمة مباشرة في قاعدة الكود، يرجى الاطلاع على وثيقة كيفية المساهمة، والتي تغطي ما يلي:
يرجى أيضاً الاطلاع على مدونة قواعد السلوك الخاصة بنا.
Copyright (c) Microsoft Corporation. جميع الحقوق محفوظة.
مرخص بموجب رخصة MIT.
ProcDump for Linux: