129 votos

¿Por qué es la depuración mejor en un IDE?

He sido un desarrollador de software para más de veinte años, programación en C, Perl, SQL, Java, PHP, JavaScript, y recientemente Python. Nunca he tenido un problema que no podía depurar utilizando detenidamente, y bien colocados depuración print declaraciones.

Yo respeto que muchas personas dicen que mis técnicas son primitivos, y con un real depurador en una IDE es mucho mejor. Sin embargo, desde mi observación, IDE, los usuarios no parecen de depuración más rápido o con más éxito que yo pueda, utilizando mis cuchillos de piedra y pieles de oso. Estoy sinceramente abierto a aprender las herramientas de la derecha, acabo nunca ha demostrado una atractiva ventaja de utilizar visual de los depuradores.

Por otra parte, yo nunca he leído un tutorial o libro en el que demostró cómo depurar eficazmente el uso de un IDE, más allá de los conceptos básicos de cómo establecer breakpoints y mostrar el contenido de las variables.

¿Qué me estoy perdiendo? Lo que hace el IDE de herramientas de depuración mucho más eficaz que el uso cuidadoso de diagnóstico print declaraciones?

Se puede sugerir recursos (tutoriales, libros, screencasts) que muestran la más fina de las técnicas de la IDE de depuración?


Dulce respuestas! Muchas gracias a todos por tomarse el tiempo. Muy esclarecedor. He votado muchas, y votó a ninguno de abajo.

Algunos puntos importantes:

  • Depuradores me puede ayudar a hacer ad hoc de la inspección o de la alteración de las variables, código, o cualquier otro aspecto del entorno de tiempo de ejecución, mientras que el manual de depuración me obliga a detener, editar y volver a ejecutar la aplicación (lo que posiblemente requiera recompilación).
  • Depuradores puede adjuntar a un proceso en ejecución o utilizar un archivo de volcado, mientras que con el manual de depuración, "pasos para reproducir un" defecto son necesarios.
  • Los depuradores pueden mostrar estructuras complejas de datos, multi-threaded ambientes, completo o de tiempo de ejecución de las pilas fácilmente y de una forma más legible de forma.
  • Depuradores ofrecen muchas maneras de reducir el tiempo y el trabajo repetitivo a hacer casi cualquier tareas de depuración.
  • Visual depuradores y consola de depuradores son útiles, y tienen muchas características en común.
  • Un visual debugger integrado en un IDE también ofrece acceso a la edición inteligente y todas las otras características de la IDE, en un único entorno de desarrollo integrado (de ahí el nombre).

87voto

LeopardSkinPillBoxHat Puntos 11851

Algunos ejemplos de algunas habilidades que un IDE depurador le dará más mensajes de seguimiento en el código:

  • Ver la pila de llamadas en cualquier punto en el tiempo, dando un contexto para su marco de pila actual.
  • El paso hacia las bibliotecas que no son capaces de volver a compilar para los efectos de la adición de trazas (asumiendo que usted tiene acceso a los símbolos de depuración)
  • Cambiar valores de variable durante la ejecución del programa
  • Editar y continuar - la capacidad para cambiar el código mientras se está ejecutando y ver de inmediato los resultados del cambio
  • Ser capaz de ver las variables, a ver cuando cambian
  • Ser capaz de saltar o repetición de secciones de código, para ver cómo el código que se va a realizar. Esto permite poner a prueba teórica de los cambios antes de hacerlos.
  • Examinar el contenido de la memoria en tiempo real
  • Alerta cuando ciertas excepciones son lanzados, incluso si son manejados por la aplicación.
  • Condicional breakpointing; la detención de la aplicación únicamente en circunstancias excepcionales, que permiten analizar la pila y variables.
  • Ver el hilo de contexto en aplicaciones multiproceso, lo cual puede ser difícil de lograr con el seguimiento (como las huellas de diferentes hilos se entrelazan en la salida).

En resumen, instrucciones de impresión (generalmente) estática y tendrás que volver a compilar para obtener información adicional, si el original de las declaraciones no eran lo suficientemente detallada. El IDE se quita la estática de la barrera, dándole un dinámico conjunto de herramientas al alcance de su mano.

Cuando empecé codificación, yo no podía entender lo que el gran problema con los depuradores y pensé que podía lograr cualquier cosa con seguimiento (concedido, que fue en unix y el depurador se GDB). Pero una vez que aprenda a usar correctamente un depurador gráfico, no quiero volver a instrucciones de impresión.

30voto

recursive Puntos 34729
  • Un IDE depurador permite cambiar el los valores de las variables en tiempo de ejecución.

  • Un IDE el depurador permite ver el valor de las variables que no sabías que te quería a ver cuando la ejecución se inició.

  • Un IDE el depurador permite ver la pila de llamadas y examinar el estado de la la función pasa de raro valores. (creo que se llama a esta función de cientos de lugares en los que usted no sabe donde estas extraño valores vienen a partir de)

  • Un IDE depurador permite condicional interrumpirá la ejecución en cualquier punto en el código, en función de una condición, no es un número de línea.

  • Un IDE depurador permite examinar el estado del programa en el caso de una excepción no controlada en lugar de sólo cagando fuera.

15voto

galets Puntos 4119

Esto es una cosa que definitivamente no puede depurar con la declaración "print", que es cuando un cliente le trae de volcado de memoria y dice "su programa se estrelló, usted me puede decir por qué?"

11voto

DarkwingDuck Puntos 1734
  • Declaraciones Imprimir todos a través de su código reduce la legibilidad.
  • Adición y eliminación de ellos con fines de depuración sólo es mucho tiempo
  • Depuradores rastrean la pila de llamadas por lo que es fácil de ver dónde se encuentra
  • Las variables pueden ser modificados sobre la marcha
  • Adhoc comandos se pueden ejecutar durante una pausa en la ejecución para ayudar a diagnosticar
  • Puede ser utilizado conjuntamente con los estados de impresión: Debug.Write ("...")

6voto

Kevin Pang Puntos 16019

De la parte superior de mi cabeza:

  1. Depuración de objetos complejos - depuradores permiten dar un paso profundamente en las entrañas de un objeto. Si el objeto tiene, por ejemplo, un conjunto de matriz de objetos complejos, las declaraciones de impresión será sólo a llegar tan lejos.
  2. La capacidad de paso Código pasado - depuradores también le permitirá saltarse el código allá de usted no desea ejecutar. Es cierto que usted puede hacer esto de forma manual, así, pero es mucho más código que tiene que inyectar.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X