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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top