2011-03-24 22 views
5

¿Sabe cómo puede hacer clic en la flecha amarilla en un punto de interrupción y arrastrarlo hacia abajo para omitir la ejecución de líneas de código? Bueno, ¿es posible crear una macro "When Hit" (o algo similar) que omita la ejecución de la línea que contiene el punto de interrupción?Depuración: código de omisión con un punto de interrupción

Así que en lugar de escribir código como

if(!Debugging) 
    Response.Redirect("LoginFail.aspx"); 

me podría sentar un punto de interrupción en la línea Response.Redirect() y "Cuando Hit" lo saltará.

+0

posible duplicado de [¿Puedo tener un punto de golpe en VisualStudio que omita líneas?] (Http://stackoverflow.com/questions/455290/can-i-have-a-hit-point-in-visualstudio- that-skips-lines) – heavyd

Respuesta

6

No sé de horneado en la forma de hacerlo. Sin embargo, puede configurar las opciones "Cuándo golpear" de un punto de interrupción para ejecutar una macro. No debería ser difícil escribir una macro que obtiene la línea actual, y luego establece la siguiente línea de depuración. Probablemente quiera consultar el método Debugger.SetNextStatement.

Una macro como este debería hacerlo:

Public Sub SkipNextLine() 
    ActiveDocument().Selection.LineDown() 
    DTE.ExecuteCommand("Debug.SetNextStatement") 
End Sub 
+1

¡Esto fue genial! Lamentablemente, Macros se eliminó de Visual Studio 2012. –

0

No hay manera que conozco para hacer esto con un punto crítico, pero se puede utilizar directivas de compilación para saltarse el código

#if (DEBUG) 
//this code is skipped in debug mode 
#endif 
0

Probar:

#if DEBUG 
Response.Redirect("LoginFail.aspx"); 
#endif 

Asegúrate de que tienes la constante DEBUG facturado tus propiedades de construcción

0

Sí, puede hacerlo directamente a través de un punto de rastreo.

  1. Encuentra la dirección de la instrucción de retorno o final de cierre de corchete en la parte inferior de la función mediante la ruptura de una vez, y luego mirar el registro EIP ya sea en la ventana de registros o añadir un reloj para "@eip ".
  2. Agregue un punto de referencia a la línea desde la que desea saltar. Recuerde que el salto ocurrirá antes de que se ejecute cualquier cosa en la línea. El contenido del punto de rastreo debe ser {@eip = address} utilizando la dirección desde el paso 1.

Ver también https://stackoverflow.com/a/14695736/301729

0

acuerdo con el uso de directivas de compilación o cualquier otra que requiera para agregar la lógica en el código. Sin embargo, también entiendo que editar el código depurado no siempre es una opción (por ejemplo, no ser propietario del código puede implicar que no se tengan todos los recursos necesarios para compilarlo).

Si ese es su caso, me temo que escribir sus propias macros o esperar que VS tenga un equivalente incorporado son sus únicas opciones.

Cuestiones relacionadas