¿Cuándo necesito un depurador mientras programo? Cualquier situación hipotética sería apreciada.

En realidad, no necesitará un depurador para depurar una declaración impresa o un bucle básico que escribió en cualquier lenguaje de programación de su agrado.

La necesidad real de un depurador surge cuando hay una gran cantidad de código complejo en ejecución, se reciben muchas entradas, se envían o reciben algunos archivos de un servidor, etc.

Piense en ello como una simple actividad diaria (solo por el simple motivo de una explicación), está lavando un pañuelo, ¿necesitaría una lavadora? … No

¿Y qué hay de 2 pañuelos? … La respuesta sigue siendo No, supongo.

Pero cuando se trata de un balde lleno de ropa o tres o cuatro baldes de este tipo, necesita ayuda externa para hacerlo.

Del mismo modo, un código complejo grande se puede depurar fácilmente (no siempre) con la ayuda de un depurador.

Por ejemplo, está trabajando con una recursión doble / triple y el programa se bloquea en un punto, es posible que no pueda entender lo que sucedió, es cuando necesita el depurador de código para poder ejecutar cada paso uno y uno y buscar el defectuoso código o el error que ocurrió para que pueda ser rectificado.

Bueno, porque a veces tenemos una imagen mental de lo que está haciendo el programa que es diferente de lo que realmente está sucediendo.

Los depuradores son una herramienta muy útil para obtener una comprensión integral de dos cosas que componen todo el software. a) Datos yb) métodos que operan con datos. Por ejemplo

para (perro d: lista de perros)
String age = d.getAge ();

Si se devuelve un int, se genera una excepción. Comprender cómo se devuelve / establece un int puede ser muy fácil en un ejemplo enseñado en universidades pero en una empresa, descubrir esto sería un desafío. Simplemente puede poner un punto de interrupción aquí y descubrir qué métodos operan en esta variable. Valor de esta variable antes de esta acción y después de esta operación. Por lo tanto, un depurador se vuelve invaluable a medida que aumenta el tamaño de la base de código. Espero haber respondido tu pregunta.

Encontrar el error en un código como este es una de las razones por las que podría necesitar un depurador:

#! / usr / bin / python
de tkinter import *
raíz = Tk ()

this_is_an_answer = False
signo = ”
número = 0
memoria = 0

main_string = StringVar ()
main_string.set (número)

Entrada (root, textvariable = main_string) .grid (fila = 0, columna = 0, columnas = 4)

def check_if_this_is_an_answer ():
global this_is_an_answer
if this_is_an_answer: wipe ()
this_is_an_answer = False

def press1 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 1
main_string.set (str (número))

def press2 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 2
main_string.set (str (número))

def press3 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 3
main_string.set (str (número))

def press4 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 4
main_string.set (str (número))

def press5 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 5
main_string.set (str (número))

def press6 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 6
main_string.set (str (número))

def press7 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 7
main_string.set (str (número))

def press8 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 8
main_string.set (str (número))

def press9 ():
check_if_this_is_an_answer ()
número global
número = número * 10
número = número + 9
main_string.set (str (número))

def press0 ():
check_if_this_is_an_answer ()
número global
número = número * 10
main_string.set (str (número))

def wipe ():
número global
memoria global
número = 0
memoria = 0
main_string.set (str (número))

def plus ():
evaluar()
memoria global, número, signo, this_is_an_answer
this_is_an_answer = False
signo = ‘+’
memoria = número
main_string.set (‘Ingrese el número para agregar.’)
número = 0

def menos ():
evaluar()
memoria global, número, signo, this_is_an_answer
this_is_an_answer = False
signo = ‘-‘
memoria = número
main_string.set (‘Ingrese el número para restar.’)
número = 0

tiempos de def ():
evaluar()
memoria global, número, signo, this_is_an_answer
this_is_an_answer = False
signo = ‘*’
memoria = número
main_string.set (‘Ingrese el número para multiplicar’)
número = 0

def divide ():
evaluar()
memoria global, número, signo, this_is_an_answer
this_is_an_answer = False
signo = ‘/’
memoria = flotante (número)
main_string.set (‘Ingrese el número para dividir por’.)
número = 0

def evaluar ():
memoria global, número, signo, this_is_an_answer
si signo == ‘+’: número = memoria + número
if sign == ‘-‘: número = memoria – número
if sign == ‘*’: número = memoria * número
si signo == ‘/’ y el número no es 0: número = memoria / número
si número == int (número): número = int (número)
si no (sign == ‘/’ y number == 0): main_string.set (number)
else: main_string.set (“No se puede dividir por cero”)
signo = ”
this_is_an_answer = True

Botón (raíz, texto = ‘7’, comando = presionar 7). Cuadrícula (fila = 1, columna = 0, columnas = 1)
Botón (raíz, texto = ‘8’, comando = prensa8) .grid (fila = 1, columna = 1, columnas = 1)
Botón (raíz, texto = ‘9’, comando = presionar 9) .grid (fila = 1, columna = 2, columnas = 1)
Botón (raíz, texto = ‘4’, comando = presionar 4). Cuadrícula (fila = 2, columna = 0, columnas = 1)
Botón (raíz, texto = ‘5’, comando = presionar 5). Cuadrícula (fila = 2, columna = 1, columnas = 1)
Botón (raíz, texto = ‘6’, comando = presionar 6). Cuadrícula (fila = 2, columna = 2, columnas = 1)
Botón (raíz, texto = ‘1’, comando = prensa1) .grid (fila = 3, columna = 0, columnas = 1)
Botón (raíz, texto = ‘2’, comando = prensa2) .grid (fila = 3, columna = 1, columnas = 1)
Botón (raíz, texto = ‘3’, comando = prensa3) .grid (fila = 3, columna = 2, columnas = 1)

Botón (raíz, texto = ‘+’, comando = más) .grid (fila = 4, columna = 3, columnas = 1)
Botón (raíz, texto = ‘-‘, comando = menos) .grid (fila = 3, columna = 3, columnas = 1)
Botón (raíz, texto = ‘X’, comando = veces). Cuadrícula (fila = 2, columna = 3, columnas = 1)
Botón (raíz, texto = ‘/’, comando = dividir) .grid (fila = 1, columna = 3, columnas = 1)

Botón (raíz, texto = ‘=’, comando = evaluar) .grid (fila = 4, columna = 2, columnas = 1)
Botón (raíz, texto = ‘CE’, comando = borrar) .grid (fila = 4, columna = 0, columnas = 1)
Botón (raíz, texto = ‘0’, comando = prensa0) .grid (fila = 4, columna = 1, columnas = 1)

root.mainloop ()

Y ahora imagine lo que sucede si segmento este código por simplicidad y lo pongo en archivos separados, y cuando ejecuta el bucle principal no está seguro de cuál de los archivos tiene el error …

¡Un depurador hace su tarea bastante fácil!

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

Este enlace enumera las características de un buen depurador.

Por lo tanto, depende totalmente de usted si desea arrancarse el pelo corrigiendo su código durante horas, o usar programas de depuración para rectificar sus problemas en un santiamén (a veces un poco más que eso 🙂).

A medida que comience a codificar un módulo más grande con miles de líneas de código, se dará cuenta de que algunos de sus módulos serán interdependientes y es posible que olvide lo que ha escrito exactamente en el tiempo extra. En tales situaciones, si surge un error en el que no conoce la causa raíz del problema, el mantenimiento del código se ve afectado. Por otro lado, si esto sucede en la fase de desarrollo, su progreso se detiene hasta que arregle el código.

Tenía esta duda cuando comencé a codificar.

Ex. Usando ASP.NET y C #

Supongamos que hay una vista de cuadrícula en el sitio oficial de Microsoft ASP.NET y hay una paginación personalizada que realmente vincula los datos que provienen de la base de datos.

Ahora, si hay una cuadrícula vacía (significa que el resultado no es vinculante para la cuadrícula), el depurador nos ayuda.

Al depurar sabremos si los datos se están recuperando de la base de datos o no, y si es así, sabremos que los datos no están vinculados correctamente a Grid.