Visual studio توقف المشروط على المكدس الدولة
-
14-11-2019 - |
سؤال
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 - دليل المبتدئين