2012-01-25 28 views

Trả lời

4

Tôi tin cách duy nhất để làm điều này là với một macro. Nhấp chuột phải vào điểm ngắt của bạn, chọn "Khi nhấn ..", chọn "Chạy macro" và trỏ đến macro có dạng như sau:

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 

Ở trên là một nửa mã psuedo; Tôi đã không thực sự kiểm tra nó, nhưng nên làm việc với một số chỉnh sửa nhỏ.

Lưu ý rằng điều này sẽ chậm như địa ngục nếu điểm ngắt được nhấn rất nhiều lần, bởi vì chạy macro từ điểm ngắt vốn đã là rất chậm chậm.

BTW, Nếu bạn được hỏi về .NET/C# nó sẽ đã đơn giản hơn rất nhiều, bạn có thể đã chỉ cần thực hiện một breakpoint có điều kiện trên

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

... và được thực hiện với nó.

+2

Lưu ý từ tương lai: [macro không tồn tại trong các phiên bản hiện tại của Visual Studio] (https://social.msdn.microsoft.com/Forums/vstudio/en-US/d8410838-085b-4647-8c42-e31b669c9f11/macros -in-visual-studio-11-developer-preview? forum = vsx). Tôi đang mở cho bất kỳ đề xuất nào để thực hiện những gì OP đã yêu cầu trong VS2013 và sau đó. –

3

Không chắc nhưng bạn có thể có thể với một trong hai Filtering hoặc điều kiện, mặc dù nó có thể được dễ dàng hơn để chỉ cần đặt breakpoint về quá trình gọi điện thoại thay vì

Đây là một nguồn lực tốt: Mastering Debugging in Visual Studio 2010 - A Beginner's Guide

+0

thiết lập điểm ngắt trên người gọi là không thuận tiện trong trường hợp của tôi, tôi sẽ phải thiết lập một số điểm ngắt, và tôi cũng muốn điều kiện trên nhiều hơn sau đó một mức độ ngăn xếp. – Vasaka

Các vấn đề liên quan