سؤال

هل هناك أي طريقة للكشف عن أن المصحح يعمل في الذاكرة؟

وهنا يأتي على نموذج تحميل pseudocode.

if debugger.IsRunning then
Application.exit
end if

تعديل: كان العنوان الأصلي "يكشف عن مصحح الأخطاء في الذاكرة"

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

المحلول

حاول القيام بما يلي

if ( System.Diagnostics.Debugger.IsAttached ) {
  ...
}

نصائح أخرى

شيئان يجب مراعاتهما قبل استخدام هذا لإغلاق تطبيق يعمل في مصحح الأخطاء:

  1. لقد استخدمت مصححا لسحب تتبع تعطل من تطبيق .NET تجاري وإرساله إلى الشركة حيث تم إصلاحه لاحقا مع شكرا لك على جعل الأمر سهل و
  2. هذا الاختيار يمكن أن يكون تافه هزم.

الآن، أن تكون أكثر استخداما، إليك كيفية استخدام هذا الكشف للحفاظ عليه funct eval. في المصحح من تغيير حالة البرنامج الخاص بك إذا كان لديك ذاكرة تخزين مؤقت بممتلكات تم تقييمها بتكسير لأسباب الأداء.

private object _calculatedProperty;

public object SomeCalculatedProperty
{
    get
    {
        if (_calculatedProperty == null)
        {
            object property = /*calculate property*/;
            if (System.Diagnostics.Debugger.IsAttached)
                return property;

            _calculatedProperty = property;
        }

        return _calculatedProperty;
    }
}

لقد استخدمت أيضا هذا البديل في بعض الأحيان لضمان عدم تخطيط خطوة مصحح الأخطاء في التقييم:

private object _calculatedProperty;

public object SomeCalculatedProperty
{
    get
    {
        bool debuggerAttached = System.Diagnostics.Debugger.IsAttached;

        if (_calculatedProperty == null || debuggerAttached)
        {
            object property = /*calculate property*/;
            if (debuggerAttached)
                return property;

            _calculatedProperty = property;
        }

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