Я считаю, что единственный способ сделать это с помощью макроса.Щелкните правой кнопкой мыши по точке останова, выберите «При нажатии ..», выберите «Запустить макрос» и укажите на макрос, который выглядит примерно так:
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")
... и покончим с этим.