6

que he estado viendo esto en mi Visual C# 2008 RSS siempre ahora:¿Cómo puedo: crear un punto de interrupción usando las condiciones? [C#]

http://lincolnfair.net/oldLincolnFair/mad.jpg

estoy bastante seguro de que este es un VS 2010 única característica, pero me preguntaba si hay de todos modos para replicar esto en VS 2008?

+0

Esto ha estado en Visual Studio por edades. Desde VS2005 al menos; posiblemente VS2003. Estoy bastante seguro de que no estaba en Visual Studio 6;) – Dan

+0

¿Qué tal en la edición express? – Kredns

+2

No tengo idea de eso, temo que no descubrí que estabas usando eso. Es posible que desee etiquetar su pregunta con 'visual studio express'? – Dan

Respuesta

19

similares a @Relster Tengo un fragmento de código con la siguiente

#if DEBUG 
    if(node.Name == "Book") 
     System.Diagnostics.Debugger.Break(); 
#endif 

Dónde node.Name == "Book" cambios en función de la condición Quiero probar. el contenedor #if DEBUG se asegura de que los cheques nunca lleguen a liberar el código.

Esto también es mucho más rápido que usar los puntos de interrupción condicional en Visual Studio. Cuando utiliza el bp condicional incorporado visual studio tiene que entrar en la aplicación, pausar todos los hilos, evaluar la expresión y determinar si es verdadera cada vez que llega al punto de interrupción. En un ciclo cerrado, esta puede ser la diferencia entre un rendimiento de ejecución casi completo y ejecutarse a paso de tortuga.

+0

Voto ascendente para el uso de "#if DEBUG ...#endif "(Iba a hacer un comentario sobre la solución aceptada a este efecto). – Alconja

+0

Tuve que aceptar su respuesta debido a la falta de actualización en Relster's. – Kredns

4

También puede hacerlo en VS 2008. Estoy seguro de que hay muchas maneras de hacerlo, pero una forma es hacer clic derecho en el punto rojo en el margen de un punto de interrupción existente & seleccionar condition..., luego simplemente darle una condición que evalúe a bool y solo se romperá si es verdad. El enunciado condicional debe tener acceso a todo lo que esté en el alcance en la línea donde se establece el punto de interrupción.

También hay otras opciones en ese menú contextual que le permiten filtrar lo que provocará un corte (por ejemplo, solo ciertos subprocesos), dividir según la cantidad de veces que se ha alcanzado el punto de interrupción, ejecutar macros al llegar al punto de interrupción , etc.

+1

Cuando hago clic derecho en el punto de interrupción, todo lo que veo es: eliminar punto de interrupción, deshabilitar punto de interrupción. – Kredns

+1

Hmmm ... ¿estás usando la edición express tal vez? – Alconja

+1

yerp falta desde el expreso –

1

la otra manera de hacer esto es hacer que sus propias condiciones y el uso de una llamada a:

System.Diagnostics.Debugger.Break(); 

Si bien no puede ser tan sofisticado como el camino VS2010 de establecer puntos de interrupción, se puede obtener el mismo efecto con una sobrecarga de código mínima. Solo recuerda sacar esas cosas cuando construyas el código de lanzamiento.

Nota: En VS2008 y VS2005, puede establecer un punto de interrupción condicional estableciendo un punto de interrupción regular (F9 o doble clic en canaleta) y haciendo clic derecho en ese punto de interrupción para establecer la "condición ...". La capacidad de establecer puntos de corte condicionales NO está disponible en VS2008 Express Edition.

+0

Eliminé mi respuesta debido a la superposición, pero debe mencionar que VS 2008 express no tiene soporte incorporado para puntos de interrupción condicionales. –

+0

@Sam Saffron, debe editar su respuesta para convertirse en la respuesta más completa. – mmcdole

Cuestiones relacionadas