hay una técnica que se puede utilizar para inyectar código desde una punto de inflexión. Es fácil, y funciona.
- un punto de ruptura
- Haga clic en el punto de interrupción, y elegir "condiciones"
- pone la línea de código en la condición (que no tiene que devolver un bool)
- Run
Cuando se golpea su punto de interrupción, el código se ejecutará, y el depurador NO se detendrá en el punto de interrupción (porque no devolvió un bool).
Tengo esta punta desde el estudio consejos Visual blog: http://blogs.msdn.com/b/zainnab/archive/2010/05/04/set-a-complex-breakpoint-condition-vstipdebug0022.aspx
He aquí un programa de ejemplo que ilustra la técnica:
static void Main(string[] args)
{
List l = new List();
Console.WriteLine(l[0]);
System.Console.ReadLine();
}
Si ejecuta este código como está, usted recibirá una excepción. Sin embargo, antes de hacerlo, agregue un punto de interrupción a la línea Console.WriteLine().
Haga clic en el punto de interrupción, y elija "condiciones" En el diálogo de estado, agregue el código siguiente:
l.Add("hello")
Ahora ejecute.
Claramente, una persona podría tener muchos problemas con esta "característica": puede cambiar el comportamiento de su aplicación con puntos de interrupción de manera que una compilación independiente del código se comporte de forma diferente a cuando se ejecuta en su máquina en tu depurador Por lo tanto, tenga mucho cuidado ...
Sí, eso también funciona. Ambos enfoques tienen las limitaciones de no soportar expresiones lambda. Realmente espero que VS2010 SP1 corrija eso. –
Desafortunadamente, VS2010 no corrige eso (lo he intentado), junto con el problema de edición y continuación en los métodos que usan expresiones lamba. Supongo que están muy relacionados (si no son lo mismo) y no tan fáciles de implementar – digEmAll