c# - puntos - punto de interrupcion visual studio 2017
Depuración de todos los eventos en Visual Studio 2010 sin establecer puntos de interrupción (9)
Estoy intentando depurar una aplicación de formulario de Windows que tiene una gran cantidad de eventos: pulsaciones de botones, temporizadores, etc.
¿Hay alguna forma de capturar cada línea de código que ejecuta la aplicación sin establecer un punto de interrupción?
edición: el programa no fue escrito por mí, por lo que no estoy familiarizado con el código. Deseo recorrer todo el programa, capturando cada línea de código que se está ejecutando. No es práctico establecer puntos de ruptura en cada evento, ya que se crean dinámicamente varios controles.
¿Por qué querrías romper en cada línea? Esto sería muy oneroso y lento. Si desea ver la actividad de su programa mientras se ejecuta, use un mecanismo de registro o Debug.Writeline
para generar información en la ventana Inmediato.
Desarrollé la herramienta Runtime Flow para resolver exactamente este problema: para comprender una gran base de código .NET desconocida a través de la función de monitoreo de llamadas en tiempo real. Es similar a IntelliTrace, pero pone más énfasis en el flujo de control que en la depuración.
En realidad no, pero puede establecer un punto de interrupción y un solo paso (F10 / F11) a través del resto del código.
Esto no es exactamente lo que está pidiendo, pero en caso de que no supiera que puede activar o desactivar un punto de ruptura existente. En su caso, podría agregar puntos de ruptura en lugares clave a lo largo de su código y simplemente deshabilitarlos cuando no quiera depurarlos. De esa manera, podrá volver a habilitarlos más adelante cuando desee usarlos nuevamente.
La activación / desactivación está disponible a través de la ventana Puntos de interrupción que se encuentra en el menú Depurar> Windows> Puntos de interrupción (CTRL + D, B). También puede incluir las columnas "Función" y "Archivo" en la ventana, lo que podría ayudarlo a identificar qué puntos de interrupción se encuentran en los controladores de eventos que le interesan.
No puede rastrear líneas de código, pero puede usar llamadas Trace.TraceInformation
donde desea tener una idea de lo que se ejecuta. También hay Debug.Write
. Ambos resultados se escribirán en la ventana de resultados de Visual Studio.
Otra solución sería agregar el registro a su aplicación, por ejemplo con log4net, pero eso puede ser excesivo para sus necesidades.
No, no lo es, debes establecer cada punto de interrupción.
Si ayuda, F9 es la tecla de método abreviado para asignar un punto de interrupción: simplemente establezca un punto de interrupción al inicio de cada método y use el paso a través de (F10) / paso a (F11) desde allí.
Para depurar un clic de botón sin establecer puntos de interrupción:
- Inicie la aplicación con el depurador.
- Llegue al estado inmediatamente antes del clic deseado.
- Vuelva al depurador y presione Pausa y luego F11 (Step Into) - no pasará nada.
- Vaya a la aplicación y presione el botón; el depurador debe tomar el control y dejarlo en el controlador de eventos.
Nota: Esto no funcionará si se manejan Paint, cualquier evento del mouse o probablemente algunos otros eventos. El depurador lo colocará en esos controladores cada vez que intente los pasos anteriores.
Si está utilizando la edición Ultimate de su Visual Studio 2010, puede usar su nueva función llamada IntelliTrace (anteriormente Depurador Histórico). Esto le permitirá hacer exactamente lo que quiere: ser capaz de ver todas las llamadas de método y eventos que ocurrieron durante la ejecución de su programa, y podrá volver al evento que necesita.
Para habilitar IntelliTrace, vaya a Tools → Options → IntelliTrace
, marque la casilla de verificación "Habilitar IntelliTrace", y seleccione uno de los dos modos: "solo eventos" o "eventos e información de llamadas", luego ejecute su aplicación con un depurador (F5) .
La diferencia entre los dos modos es que este último utiliza el generador de perfiles para recopilar toda la información de tiempo de ejecución, por lo que obtiene una pila de llamadas completa, sin embargo, no podrá usar las funciones de edición y continuación del depurador.
Puede encontrar más en esta serie de artículos y, por supuesto, en MSDN.
También puedes probar una herramienta de cobertura de código.
Por ejemplo, si tiene dotCover y dotCover , puede ejecutar su aplicación (a través del elemento del menú dotCover-> Cover Application ...) y cuando la aplicación finalice, dotCover le mostrará las líneas de código que se ejecutaron en el IDE de VS Destacándolos en verde. Las líneas de código que no se ejecutan están coloreadas en rojo.
No sé si hay otras herramientas que hacen esto, pero es una opción.