DEPURACION NODE JS

Streams For the Win: A Performance Comparison of Node.js Methods ...

La depuración es un proceso de varias etapas que generalmente sigue estas lineas 

1) Identifica un error en tu programa.
2) Encuentra donde esta el error de tu código.
3) Analiza por que ocurre el error.
4) Arregla el error.
5) Valide que su solución funcione.

En este caso realizaremos un ejemplo sobre la serie de fibonacci que se encuentra con un error y al final de este proceso lograremos arreglar ese error.

PASOS

1) Crearemos un archivo en llamado fibonacci.js y pondremos el siguiente ejercicio

EJERCICIO SIN CORRECCIÓN
function fibonacci(n) {
    let n1 = 0;
    let n2 = 1;
    let sum = 0;
  
    for (let i = 2i < ni++) {
      sum = n1 + n2;
      n1 = n2;
      n2 = sum;
    }
  
    return n === 0 ? n1 : n2;
  }
  
  const result = fibonacci(5);
  console.log(result);


2) Ingresaremos el siguiente código en nuestra terminal.
node fibonacci.js


3) Iniciaremos el depurador incorporado con el siguiente código.
node inspect fibonacci.js

Una vez hecho esto deberías ver el indicador del depurador mostrado, ahora usaremos el comando S  hasta que el punto de ejecución se encuentre al comienzo de la función fibonacci como te lo presento ahora.:

break in fibonacci.js:2
  1 function fibonacci(n) {
> 2   let n1 = 0;
  3   let n2 = 1;
  4   let sum = 0;
debug>

4) Ahora podemos verificar en este punto el valor del parámetro   n    pasado en la función usando el comando:
exec n

5) Deberías ver que en la consola se muestra 5. Vuelve a ingresar usando el comando S hasta que el punto de ejecución este al comienzo del ciclo como te lo muestro a continuación 

break in fibonacci.js:7
  5
  6   for (let i = 2; i <= n; i++) {
> 7     sum = n1 + n2;
  8     n1 = n2;
  9     n2 = sum;
debug>


6) Ahora agregaremos un punto de interrupción aquí para que podamos movernos rápidamente por las interacciones de el bucle, para eso escribiremos el siguiente código.

sb()

7) Avanzaremos a la siguiente iteracion del bucle con el comando C

Podemos verificar el estado actual de iteracion con el siguiente comando
exec [i, sum]

Deberias ver en la consola [ 3,1] como el codigo no ha actualizado el valor de sum la iteracion actual (3), actualmente representa el numero de Fibonacci para la iteracion anterior:

fibonacci(2) = fibonacci(0) + fibonacci(1)
             = 0 + 1
             = 1
Parece que nuestro programa se ejecuta correctamente hasta ese punto por lo que continuaremos con la siguiente iteracion del bucle con el comando C y verificaremos el estado nuevamente.

exec [i, sum]

Deberías ver en la consola [4,2] que es correcta nuevamente. Ahora estamos en el punto justo antes del numero que nos interesa (5), por lo que puede seer prudente avanzar paso a paso a través de esta iteracion, utilizando el comando S. Intentaremos alcanzar nuestro punto de ruptura anterior pero paso a paso.

Después de verificar la condición del bucle i < n , la ejecución de repente salto a la linea de retorno 

¿QUE PASO ?

break in fibonacci.js:12
 10   }
 11
>12   return n === 0 ? n1 : n2;
 13 }
 14

Eso es todo, acabamos de encontrar nuestro error, en lugar de actualizar la suma para la iteracion 5 el codigo salto del bucle es por eso que obtuvimos el resultado de la iteracion anterior (3) en nuestra ejecucion inicial.

Agregaremos la condicion del bucle cambiando i < n a i <=n en el editor de código. Ahora puede salir del repurador con CTRL + D y ejecutar su programa nuevamente .

EJERCICIO HECHO  YA LA CORRECCIÓN RESPECTIVA 

function fibonacci(n) {
    let n1 = 0;
    let n2 = 1;
    let sum = 0;
  
    for (let i = 2i <= ni++) {
      sum = n1 + n2;
      n1 = n2;
      n2 = sum;
    }
  
    return n === 0 ? n1 : n2;
  }
  
  const result = fibonacci(5);
  console.log(result);

Una vez solucionado este error volveremos a ejecutar nuestro programa con el codigo

node fibonacci.js
Con esto el resultado en nuestra consola deberá ser 5  y hemos logrado arreglar nuestro error.

GRACIAS POR TU TIEMPO 


NOTA: ADJUNTO IMAGENES DE MI TERMINAL DONDE REALICE EL MISMO PROCESO QUE YA DETALLE ANTES.

TERMINAL





FINNNNNNNNNNNNN

Comentarios

Entradas populares