سؤال

Visual studio يمكن طباعة الاستدعاءات عندما توقف ضرب ، و يمكن أن تتوقف عند استيفاء الشروط, هل هناك أي طريقة الجمع التي ووقف عند ما يسمى وظيفة من آخر اختيار واحدة, و تجاهل جميع مكالمات أخرى ؟

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

المحلول

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

 Sub ContinueUnlessCalledFromRightContext()
    For Each frame As EnvDTE.StackFrame In DTE.Debugger.CurrentThread.StackFrames
        If (frame.FunctionName.Contains("SomeOtherMethodsName") Then Exit Function
    Next

    DTE.Debugger.Go() ` we weren't called from the right context so continue execution.
End Sub

أعلاه هو نصف الزائف المدونة ؛ لم أكن في الواقع اختبار ذلك ، ولكن يجب أن تعمل مع بعض التعديلات الطفيفة.

لاحظ أن هذا سوف يكون بطيئا كما الجحيم إذا توقف هو ضرب الكثير من الأوقات, لأن تشغيل وحدات الماكرو من نقاط بطبيعتها جدا بطيئة.

راجع للشغل, إذا كنت تسأل عن .NET / C# كان أبسط كثيرا, كنت قد أدلى به للتو المشروط توقف على

new System.Diagnostics.StackTrace().ToString().Contains("SomeOtherMethodsName")

...وينبغي القيام به معها.

نصائح أخرى

غير متأكد ولكن قد تكون قادرا على تصفية أو شروط، على الرغم من أنه قد يكون من الأسهل وضع نقطة التوقف على عملية الاتصال بدلا من ذلك

هذا هو مورد جيد: اتقان تصحيح الأخطاء في Visual Studio 2010 - دليل المبتدئين

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