2010-04-02 12 views
26

Digamos que tengo 10 puntos de interrupción y quiero borrar uno pero no el otro 9.Pregunta sobre cómo quitar un estudio Breakpoint Visual

Si i Mueva el punto de interrupción en el que yo quiero sacar, es resucitó la próxima vez que reinicie la aplicación. La única manera que sé que de forma permanente deshacerse de él es eliminar todos los puntos de ruptura, que preferiría no hacer, ya que tendría que reajustar el otro 9.

¿Hay una mejor manera en cualquier versión VS?

Respuesta

20

El estado del punto de interrupción solo se altera temporalmente si lo modifica mientras está depurando y es un punto de interrupción de límites múltiples. Esta es en realidad una característica de Visual Studio. Ver http://connect.microsoft.com/VisualStudio/feedback/details/391642/permanently-remove-a-breakpoint-in-visual-studio-during-debugging.

Si no está depurando y lo elimina, no volverá. Alternativamente, como otros han sugerido, puede eliminarlo permanentemente usando la ventana de administración del punto de interrupción.

+1

Siempre he sido capaz de eliminar puntos de interrupción durante la depuración. Las veces que no se elimina (es decir, su estado se altera temporalmente) es cuando el punto de interrupción tiene puntos de interrupción secundarios (es decir, ha establecido un punto de interrupción en una función sobrecargada). Consulte http://msdn.microsoft.com/en-us/library/02ckd1z7(VS.71).aspx#vctskbreakpointswindowchildbreakpoints – adrianbanks

+2

* "El estado del punto de interrupción solo se altera temporalmente si lo cambia mientras depura. Esto es en realidad una característica de Visual Studio. "* ¿Puedes justificar esto? Esto no es algo que haya notado en todos mis años de uso de VS. Me parece que cuando VS se niega a eliminar mis puntos de interrupción es debido a un archivo .user dañado. – slugster

+0

http://connect.microsoft.com/VisualStudio/feedback/details/391642/permanently-remove-a-breakpoint-in-visual-studio-during-debugging - adrian está en lo cierto, es solo para puntos de interrupción multi-bound. – womp

10

Al presionar Ctrl + Alt + B aparecerá una lista de todos los puntos de interrupción en su solución, desde la cual puede alternarlos manualmente o eliminarlos con un clic derecho.

3

Abra la ventana de puntos de interrupción (Depuración -> Windows -> Puntos de interrupción), seleccione el punto de interrupción que desea eliminar y presione la tecla Eliminar (o haga clic en el icono de la cruz).

Si está alternando el punto de interrupción con el teclado (F9 usando mis asignaciones de teclado), a veces no lo elimina correctamente. Presionar F9 de nuevo lo eliminará por completo (esto se debe a que el punto de interrupción está configurado en múltiples hilos y alternarlo mientras que la depuración solo desactiva el punto de corte principal, pero no los de los otros hilos).

1

Si desea eliminar un punto de interrupción con F9 o haciendo clic en el glifo rojo, ese punto de interrupción debe ser sin hijos. De lo contrario, el punto de interrupción persistirá a través de sus puntos críticos de supervivencia. (Los puntos de corte secundarios se pueden formar cuando establece puntos de interrupción durante la depuración.)
Puede marcar esta pregunta, "Disable/remove child Breakpoints?", para que una macro elimine puntos de interrupción secundarios. Sin embargo, creo que no deberías llamar a la macro durante una sesión de depuración, ya que esto podría provocar que tus puntos de interrupción no sean afectados.

0

El siguiente código se puede utilizar como una macro para eliminar el punto de interrupción en la línea seleccionada actualmente. (Tenga en cuenta que Visual Studio selecciona automáticamente la línea de un punto de ruptura cuando es golpeado.)

Sub RemoveBreakPoint() 
    Dim debugger As EnvDTE.Debugger = DTE.Debugger 
    Dim children As EnvDTE.Breakpoints 
    Dim sel As Integer = DTE.ActiveDocument.Selection.ActivePoint.Line 
    For Each bp As EnvDTE.Breakpoint In debugger.Breakpoints 
     If bp.File <> DTE.ActiveDocument.FullName Then 
      Continue For 
     End If 
     For Each bpc As EnvDTE.Breakpoint In bp.Children 
      If bpc.FileLine = sel Then 
       bp.Delete() 
       Exit For 
      End If 
     Next 
    Next 
End Sub 

se puede asignar una combinación de teclas a la misma para facilitar el acceso. (Herramientas> Opciones> Entorno> Teclado).

0

Publicación cruzada de https://stackoverflow.com/a/35935390/257470, pero es aún más relevante aquí.

Aquí hay algunas respuestas, pero en mi opinión las acciones propuestas son despectivas para usar durante la depuración (no quiero perder mi enfoque).

Mi flujo con puntos de interrupción pegajosas durante los puntos de ruptura es el siguiente:

Durante depuración, DISABLE el punto de interrupción en vez de eliminarla.

maneras posibles de inhabilitar a un punto de ruptura:

  • de desplazarse con el cursor y haga clic en el icono de dos tiempos;
  • o use el menú contextual en él;
  • o atajo de teclado CTRL + F9.

Más tarde, durante el desarrollo, elimino un punto de interrupción deshabilitado cuando veo uno.

PS. También es una buena práctica eliminar todos los puntos de interrupción de vez en cuando.