باستخدام فئة PHD لعزل تسرب الذاكرة

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية194655
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
تسرب الذاكرة مشكلة في العديد من التطبيقات. هي طريقة خرسانة لتحديد تسرب الذاكرة في استخدام فئة PHD Visual C++ المتوفرة في هذه المقالة. عن طريق تسجيل إحصائيات الذاكرة في تطبيق فئة PHD باستخدام ، يمكنك الحصول على فكرة أكثر دقة من حيث حدوث تسرب للذاكرة.

PHD.EXE الاستخراج الذاتي نموذجًا التي الذي يوضح كيفية استخدام PHD تضمين الفئة إثبات/disprove تسرب للذاكرة. تعتبر فئة PHD مجمّع رفيع حول "دالات مساعد الأداء" من مجموعة أدوات الموارد لـ Windows NT. تعمل هذه التعليمة البرمجية على Windows NT فقط.
معلومات أخرى
الملفات التالية غير متوفرة للتنزيل من "مركز التنزيل لـ Microsoft":
تاريخ الإصدار: أكتوبر - 23-1998

للحصول على معلومات إضافية حول كيفية تنزيل ملفات دعم Microsoft "، انقر فوق رقم المقالة التالي لعرضها في" قاعدة المعارف لـ Microsoft:
119591كيفية الحصول على ملفات دعم Microsoft من الخدمات عبر الإنترنت
قامت Microsoft بفحص هذا الملف بحثًا عن الفيروسات. استخدام Microsoft أحدث من برنامج كشف الفيروس المتوفر على التاريخ الذي تم نشر الملف. يتم تخزين الملف على ملقمات محسنة الأمان التي تساعد على منع إجراء أية تغييرات غير مصرح بها على الملف.
يتم تضمين الملفات المفتاح التالي في النموذج:
    FileName                Description    ---------------------------------------------------------   PDH.dll                  Contains helper functions used by PHD.   RKLeak.cpp               Contains the code for the PHD class.   RKLeak.h                 Header file for the PHD class.   TestMain.cpp             A simple program to demonstrate the PHD class.				

لاستخدام فئة PHD بتضمين الملف RKLeak.cpp في المشروع. بما في ذلك ملف الرأس إلى حدوث ربط إلى مكتبة PDH.lib الذي يأتي مع 6.0 C++ مرئية. تحتاج أيضاً إلى إضافة الملف PHD.dll إلى مسار الخاص بك بحيث يقوم التطبيق من العثور عليه.

يحتوي ملف TestMain.cpp على نموذج التعليمات البرمجية التالي الذي يوضح كيفية استخدام فئة PHD:

رمز نموذج

   **************************************************   #include "rkLeak.h"   void main()   {      char *myCntrs[]={         "\\Memory\\Available bytes",         "\\Memory\\committed bytes",         "\\Memory\\pool Paged bytes",         "\\Memory\\pool Nonpaged bytes",      };      PHD mphd2(myCntrs,sizeof(myCntrs)/sizeof(myCntrs[0]));      PHD mphd;      const int arSize=4096;      for (int i=0;i<5;i++){         double *d = new double[arSize];         d[0]= 1.;      d[arSize-1] = 2.;  // Force to committed mem.         mphd.logData(i);         mphd2.logData(i);      }   ***************************************************				

أول استخدام منشئ PHD يسمح لك تحديد العناصر التي تريد مراقبتها. هذه هي نفس العناصر المتوفرة في التطبيق Perfmon.exe.

استخدام الثاني مُنشئ PHD (بدون وسائط) يستخدم سجلات الافتراضية التالية على العمود: وحدات البايت الخاصة "و" وحدات بايت ملف صفحة "و" بايت التجمّع المقسم إلى صفحات تجمع غير مقسم إلى صفحات بايت و مجموعة العمل.

كما يمكنك مشاهدة من نموذج التعليمة البرمجية يُستخدم لوضع API leaking المشتبه في حلقة فئة PHD ومن باستدعاء أسلوب PHD::logData بشكل دوري. تسجيل بيانات إلى ملف باسم "< name>_perf.log EXE" في الدليل الحالي. إذا أظهرت ملف السجل الناتج زيادة خطي بالبايت الخاصة ، لا يتضمن هذا الزيادة تسرب للذاكرة في API ولكن فقط تسرب ذاكرة في التطبيق. إذا تم استخدام API بشكل غير صحيح (على سبيل المثال، بواسطة بشكل غير صحيح تحرير الموارد المخصصة بواسطة استدعاء الأولي) ، إظهار النتائج فقط تسرب للذاكرة, لا API خاطئ. لتضييق لأسفل المشكلة إنشاء تطبيق المحتملة أبسط exercises API في السؤال.

يحتاج المستخدمون 5.x C++ المرئية إلى التعليق الخروج الأسطر التالية من RKLeak.h:
   #undef PdhOpenQuery      //          PdhOpenQueryA   extern "C" long __stdcall   PdhOpenQuery (       IN      LPCSTR      szDataSource,       IN      DWORD       dwUserData,       IN      HQUERY      *phQuery   );				

أدوات أخرى

يمكنك البحث على الويب في صفحات الأسئلة المتداولة للحصول على معلومات حول مصححات لجهة خارجية المتنوعة التي يمكن أن تساعدك في العثور على تسرب الذاكرة. على سبيل المثال، هناك الأسئلة المتداولة التالية مذكورة العديد من المنتجات: ملاحظة يتم تصنيع منتجات الجهات الأخرى التي تمت مناقشتها هنا قبل موردين مستقلين عن Microsoft; نقدم لم ضمان ، ضمنيًا أو صريحًا، بخصوص أداء تلك المنتجات أو كفاءتها. يجب أيضًا ملاحظة أن في بعض الأحيان أن تجعل هذه المنتجات تقارير خاطئة من تسرب ولكنها لا تزال أدوات مفيدة جداً.

كما يعتبر Visual C++ كومة الذاكرة المؤقتة التصحيح API أداة مفيدة لتحديد موقع الثقوب. تتضمن الوظائف _CrtMemDifference() و _CrtMemDumpAllObjectsSince() ، والتي تم توثيقها في دليل "للمبرمجين C++ مرئية" في المقطع Debug مرجع دالة. هذه الدالات فقط الكشف عن تسرب في التعليمات البرمجية "و" لا تسرب في مكونات أخرى.

(ج) 1998 شركة Microsoft ، كافة حقوق محجوز. المساهمات قبل حنان Anderson ، Microsoft Corporation.
حدوث تعليق تسرب مجمد

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 194655 - آخر مراجعة: 02/24/2014 08:35:06 - المراجعة: 2.5

Microsoft Visual Studio 6.0 Enterprise Edition, Microsoft Visual Studio 97 Service Pack 3, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0

  • kbnosurvey kbarchive kbmt kbdownload kbfile kbinfo kbsample KB194655 KbMtar
تعليقات