¿Cómo establecer puntos de interrupción condicionales en Visual Studio?

133

¿Hay una manera fácil de establecer puntos de interrupción condicionales en Visual Studio?

Si quiero alcanzar un punto de interrupción solo cuando el valor de una variable se convierte en algo, ¿cómo puedo hacerlo?

MrClan
fuente
11
Tenga en cuenta que la edición Express no tiene esta funcionalidad.
Alexei Levenkov
1
Estoy usando Express 2015 y tiene la capacidad de puntos de interrupción condicionales
mark.monteiro
1
La edición comunitaria de 2017 también tiene puntos de interrupción condicionales
PentiumPro200

Respuestas:

174

Establezca un punto de interrupción como de costumbre. Haz clic derecho. Haga clic en condición.

Jeff
fuente
1
En VS 2015, debe pasar el cursor sobre el punto de interrupción y hacer clic en el ícono de
ajustes
Es decir, haga clic derecho, establezca la condición, obtenga el error "Condición para un punto de interrupción fallido" ... ¿no?
Toby Caulk
1
La respuesta también debe incluir la sintaxis de las declaraciones condicionales o un enlace informativo.
Andrew
50

Cuando esté utilizando la edición Express, puede probar esto:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

la declaración if se asegura de que en la versión de compilación el punto de ruptura no esté presente.

panako
fuente
3
Esto tiene una gran ventaja de rendimiento / ahorro de tiempo. Estaba iterando a través de cada int 'id' potencial en un programa mío (solo alrededor de 3.5 millones), que solo toma un par de segundos. Estaba tratando de usar el punto de interrupción condicional, pero como no estaba en una rama condicional, redujo la velocidad de ejecución hasta el punto en que, después de unos minutos, terminaría la sesión de depuración. El uso del punto de interrupción compilado lo hizo instantáneo.
Sandwich de Goldfish
35

Visual Studio ofrece muchas opciones para puntos de interrupción condicionales:

Para configurar cualquiera de estos

  1. Establecer un punto de interrupción.
  2. Haga clic derecho sobre el punto de interrupción y, en el menú emergente, seleccione una opción que lo acomode.

Estas opciones son las siguientes:

  • Puede establecer una condición, en función de una expresión de código que proporcione (seleccione Condición en el menú emergente). Por ejemplo, puede especificar esa foo == 8o alguna otra expresión.
  • Puede hacer que los puntos de interrupción se activen después de haberlos golpeado un cierto número de veces. (seleccione Hit Count en el menú emergente). Esta es una opción divertida para jugar, ya que en realidad no se limita a romper en un cierto recuento de golpes, sino que también tiene opciones para algunos otros escenarios. Te lo dejo a ti para explorar las posibilidades.
  • Puede establecer filtros en la ID del proceso, la ID del hilo y el nombre de la máquina (seleccione Filtro en el menú emergente)
C Johnson
fuente
16

Solo otra forma de hacerlo (o si está utilizando express) agregue la condición en el código:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}
Ignacio Soler García
fuente
9
  1. Establecer punto de interrupción en la línea
  2. Haga clic derecho en la bola ROJA
  3. Elegir punto de ruptura conditioal
  4. Condición de instalación
Tigran
fuente
8

Escribir la condición real puede ser la parte difícil, por lo que tiendo a

  1. Establecer un punto de interrupción regular .
  2. Ejecute el código hasta que se alcance el punto de interrupción por primera vez.
  3. Use la ventana Inmediato (Depuración> Windows> Inmediato) para probar su expresión .
  4. Haga clic derecho en el punto de interrupción, haga clic en Condición y pegue su expresión .

Ventajas de usar la ventana Inmediato:

  • Tiene IntelliSense .
  • Puede estar seguro de que las variables en la expresión están dentro del alcance cuando se evalúa la expresión.
  • Puede estar seguro de que su expresión devuelve verdadero o falso .

Este ejemplo se rompe cuando el código se refiere a una tabla con el nombre "Configuración":

table.GetTableName().Contains("Setting")
Andy Joiner
fuente
5

Cree un punto de interrupción como lo haría normalmente, haga clic derecho en el punto rojo y seleccione "condición".

Brandon Moretz
fuente
4
  1. Establecer un punto de interrupción como de costumbre
  2. Haga clic derecho en el punto de interrupción y seleccione Condición
  3. Verá un cuadro de diálogo que dice "Condición de punto de interrupción"
  4. Ponga una condición en el campo, por ejemplo, "i == 5"

El punto de interrupción solo se alcanzará cuando tenga 5 años.

usuario423119
fuente
4
  1. Establezca un punto de interrupción como de costumbre.
  2. Haga clic derecho en el marcador del punto de interrupción
  3. Haga clic en "Condición ..."
  4. Escribe una condición, puedes usar nombres de variables
  5. Seleccione "Es cierto" o "Ha cambiado"
Casey
fuente
4

En Visual Studio 6.0

Alt+ F9!!!

Vorac
fuente
1
-1) Esto no funciona en VS 2012 2) Esta pregunta ya tiene muchas otras (mejores) respuestas y 3) ¿a quién le importa VS 6.0 (lanzado en 1998)? 4) Incluso si alguien se preocupa por VS 6, la pregunta está etiquetada con .Net que no tenía soporte hasta la próxima versión de VS (Visual Studio .Net)
Tim Medora
77
Bueno, las otras respuestas no funcionan en VS 6.0. Entonces publiqué una solución.
Vorac
1

Configure breakpointcomo lo hace normalmente, haga clic derecho en el punto de ruptura y seleccione la condionopción y establezca su condición.

Panda de fuego
fuente
1

Cree un punto de interrupción de función condicional:

  1. En la ventana Puntos de interrupción, haga clic en Nuevo para crear un nuevo punto de interrupción.

  2. En la pestaña Función, escriba Invertir para Función. Escriba 1 para Línea, escriba 1 para Carácter y luego configure Idioma en Básico.

  3. Haga clic en Condición y asegúrese de que la casilla de verificación Condición esté seleccionada. Escriba instr.length > 0Condición, asegúrese de que esté seleccionada la opción verdadera y luego haga clic en Aceptar.

  4. En el cuadro de diálogo Nuevo punto de interrupción, haga clic en Aceptar.

  5. En el menú Depurar, haga clic en Inicio.

JAiro
fuente
0

Si viniste de Google, esta respuesta podría ser lo que estás buscando.

  1. Haga clic en Debug> New BreakPoint> Function Breakpoint ingrese la descripción de la imagen aquí

  2. allí elija el punto de interrupción condicional.

T.Todua
fuente