Visual Studio, breakpoint isabetiyle çağrı yığınını yazdırabilir ve koşullar karşılandığında durdurabilir, işlevi başka bir seçili olandan çağrıldığında bunu durdurabilir ve durdurabilir ve diğer aramalar?Visual studio kesme noktası yığın durumunda koşullu
cevap
Bunu yapmanın tek yolu bir makro ile. Sağ senin kesme noktası "Hit zaman ..", seçin "bir makro çalıştır" seçeneğini tıklatın ve şöyle bir şey bir makro işaret edin:
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
yukarıda yarım psuedo kodudur; Aslında test etmedim, ancak bazı küçük düzenlemelerle çalışmalıyım.
Kesme noktasından çalışan makroların doğal olarak çok yavaş olmasından dolayı, kesintinin çok fazla vurulması halinde bu durumun cehennemde yavaş olacağını unutmayın. Eğer .NET hakkında soran olsaydı
BTW,/C# bu çok daha basit, sadece
new System.Diagnostics.StackTrace().ToString().Contains("SomeOtherMethodsName")
bir koşullu kesme noktası yapılmış yapabilirdim ederdi ... ve onunla yapılabilir.
emin ama sadece çağıran sürecine kesme noktası koymak için daha kolay olabilir olsa, Filtreleme ya Koşullar biriyle mümkün olabilir Değil yerine
Bu iyi bir kaynaktır: İnanıyorum Mastering Debugging in Visual Studio 2010 - A Beginner's Guide
Arayanda kesme kesme noktası benim durumumda uygun değil, birkaç kesme noktası belirlemem gerekecek ve ayrıca bir yığın seviyesinde daha fazla koşullamak istiyorum. – Vasaka
Gelecek için not: [makrolar, Visual Studio'nun geçerli sürümlerinde mevcut değil] (https://social.msdn.microsoft.com/Forums/vstudio/en-US/d8410838-085b-4647-8c42-e31b669c9f11/macros -in-görsel-stüdyo-11-geliştirici önizleme? forumu = VSX). VS2013 ve sonraki sürümlerinde OP'nin sorgusu için herhangi bir öneriye açığım. –