विजुअल स्टूडियो ब्रेकपॉइंट हिट करते समय कॉल स्टैक प्रिंट कर सकता है, और शर्तों को पूरा होने पर रोक सकता है, क्या इसे गठबंधन करने के लिए कोई तरीका है और जब किसी अन्य चयनित व्यक्ति से फ़ंक्शन कहा जाता है, तो उसे अनदेखा करें, और सभी को अनदेखा करें अन्य कॉल?स्टैक स्टेटस पर सशर्त स्टूडियो ब्रेकपॉइंट
उत्तर
मेरा मानना है कि ऐसा करने का एकमात्र तरीका मैक्रो के साथ है। राइट अपने ब्रेकप्वाइंट, चुनें "जब मारो ..", चुनें "कोई मैक्रो चलाएँ" क्लिक करें, और एक मैक्रो ऐसा ही कुछ हो जाता है करने के लिए यह बात:
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
ऊपर आधा छद्म कोड है, मैंने वास्तव में इसका परीक्षण नहीं किया था, लेकिन कुछ मामूली संपादन के साथ काम करना चाहिए।
ध्यान दें कि ब्रेकपॉइंट कई बार मारा जाता है, तो यह नरक के रूप में धीमा हो जाएगा, क्योंकि ब्रेकपॉइंट्स से मैक्रोज़ चलाना स्वाभाविक रूप से बहुत धीमा है।
BTW, आप नेट के बारे में पूछ रहे थे, तो/सी # यह होता गया है बहुत आसान हो गया है, तो आप सिर्फ
new System.Diagnostics.StackTrace().ToString().Contains("SomeOtherMethodsName")
पर एक सशर्त ब्रेकप्वाइंट बना कर सकती थीं ... और यह के साथ किया जा।
सुनिश्चित नहीं हैं, लेकिन आप या तो छनन या शर्तों के साथ कर सकता है, हालांकि यह आसान हो सकता है सिर्फ बुला प्रक्रिया पर ब्रेकप्वाइंट डाल करने के बजाय
यह एक अच्छा संसाधन है: Mastering Debugging in Visual Studio 2010 - A Beginner's Guide
कॉलर पर सेटिंग ब्रेकपॉइंट मेरे मामले में सुविधाजनक नहीं है, मुझे कई ब्रेकपॉइंट्स सेट करना होगा, और मैं एक और स्टैक स्तर पर भी शर्त बनाना चाहता हूं। – Vasaka
भविष्य से नोट: [मैक्रोज़ विजुअल स्टूडियो के मौजूदा संस्करणों में मौजूद नहीं है] (https://social.msdn.microsoft.com/Forums/vstudio/en-US/d8410838-085b-4647-8c42-e31b669c9f11/macros -इन-विजुअल स्टूडियो-11-डेवलपर पूर्वावलोकन? मंच = VSX)। मैं वीएस2013 और बाद में ओपी से पूछे जाने वाले किसी भी सुझाव के लिए खुला हूं। –