Punto de interrupción del estudio visual condicional en el estado de la pila
-
14-11-2019 - |
Pregunta
Visual Studio puede imprimir la pila de llamadas cuando el punto de interrupción llega, y puede detenerse cuando se cumplen las condiciones, ¿hay alguna forma de combinar eso y detenerse cuando se llama la función de otro seleccionado, e ignorar todas las demás llamadas?
Solución
Creo que la única manera de hacerlo es con una macro.Haga clic con el botón derecho en su punto de interrupción, elija "Cuando sea golpeado ..", seleccione "Ejecutar una macro" y apúntelo a una macro que va algo así:
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
El anterior es el medio código psuedo;En realidad no lo probé, pero debería trabajar con algunas ediciones menores.
Tenga en cuenta que esto será lento como el infierno si el punto de interrupción se alcanza muchas veces, ya que las macros en los puntos de interrupción son inherentemente muy lento.
Por cierto, si estaba preguntando por .NET / C # hubiera sido mucho más simple, podría haber hecho un punto de interrupción condicional en
new System.Diagnostics.StackTrace().ToString().Contains("SomeOtherMethodsName")
... y hágalo con eso.
Otros consejos
No estoy seguro, pero podría ser capaz de filtrar o afecciones, aunque podría ser más fácil simplemente colocar el punto de interrupción en el proceso de llamadas en lugar de
Este es un buen recurso: Mastering Depuración en Visual Studio 2010 - Guía de un principiante