2012-01-25 12 views

cevap

4

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.

+2

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. –

3

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

+0

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