it-swarm-es.com

Aplicaciones de depuración

En mi desarrollo actual, he decidido mantener el símbolo del sistema abierto para que pueda ver los mensajes de depuración. Por ejemplo, si algo no estaba ocurriendo cuando debería, pondría una declaración de cout en cada función para determinar dónde está el enlace roto. A veces, podría obtener cientos del mismo mensaje (como WM_MousEmithe) y debo determinar si los mensajes aún están viniendo o no, por lo que usaría una variable estática, y la incrementaría, así que podría tener:

...
3> WM_MOUSEMOVE processed.
4> WM_MOUSEMOVE processed.
54> WM_CLICK processed.
5> WM_MOUSEMOVE processed.
...

en mi cmd. (No me preguntes por qué habría 54 WM_COLICK y 4 WM_MOUSEMOVE)

Lo que me gustaría saber es su opinión. ¿Es este un buen enfoque para la depuración? ¿Qué tipo de sintaxis utilizaría para consistencia? ¿Una sintaxis incluso importa? Y haría cualquier sugerencia sobre cómo podría mejorarse este método.

4

Hay algunas maneras.

Lo que está utilizando es una forma rudimentaria de registro. Probablemente sea la forma más eficiente de la depuración de la mayoría de los errores. Vale la pena su tiempo para escribir un módulo de registro sólido que se puede redirigir a la pantalla o el archivo, tamponado/sin problemas, etc. Debe tener una marca de tiempo y un mensaje, si nada más.

También hay excepciones de lanzamiento, esto puede ser más útil con los idiomas que realizan una traza de pila usando símbolos, por ejemplo, Java o Python. Perl puede croak () o morir () con información útil similar.

Otro método es tener una gran variedad de pruebas unitarias que pueden recoger errores de una manera refinada. Eso, por supuesto, implica pruebas bien escritas.

Los anteriores son esencialmente métodos no interactivos.

También hay un viejo depurador interactivo, que funciona en varios niveles de utilidad dependiendo del entorno de desarrollo. Lisp probablemente tiene las mejores instalaciones de depuración disponibles; C # probablemente tiene la UI más desarrollada. Los depósitos interactivos pueden ser muy útiles cuando su código "lógicamente" debería funcionar, y realmente necesita hacer algunas variables serias y una sonda. Probablemente sea el más ineficiente y difícil de replicar todos los métodos, pero puede ser realmente útil.

El depurador interactivo se puede ampliar para tener varias condiciones y scripts que se ejecutan en las variables que golpean los valores, pero no estoy seguro de si los entornos actuales lo admiten, el último que escuché fue desarrollado en '93 para ... ¡PROG? No se puede recordar la parte superior de mi cabeza.

Un método que se investigó a principios de los 80 y está teniendo una reaparición menor hoy en día es la depuración reversa/reversa. Estoy trabajando en hacer eso en mi tesis para un sistema integrado altamente exótico.

3
Paul Nathan

A veces, las declaraciones de COUT son más fáciles de hacer, pero creo que las excepciones son la forma de ir en la mayoría de los casos.

0
chiurox

Uso COUTS/Rastros Todo el tiempo: encuentro que la depuración del estilo de interrupción a menudo interrumpe demasiado mi proceso de pensamiento y hace que sea más difícil seguir la ejecución. A veces, sin embargo, la depuración de puntos de interrupción es absolutamente invaluable. Creo que es importante estar familiarizado con varios estilos de depuración y elige lo mejor para cada caso: la interrupción de un movimiento del mouse sería un infierno, por una sola cosa ...

0
Lizzan