Knowledge base
es
es
  • Base de conocimiento
  • Bash scripting
    • Echemos un vistazo
  • Jenkins
    • Echemos un vistazo
  • Kafka
    • Echemos un vistazo
  • Kubernetes / Docker
    • Echemos un vistazo
  • Node.js
    • Echemos un vistazo
    • Node binary executable
      • Evaluando dinámicamente el código
      • Precarga de módulos
      • Límite de pila de datos (Stack trace)
    • Depuración y diagnóstico
    • Enfoque práctico de javascript
      • Tipos de datos
      • Funciones
      • Herencia de prototipos
        • Funcional
        • Funciones de constructor
        • Constructor (Class-Syntax)
      • Closure scope
    • Paquetes y dependencias
      • Inicializando paquetes
      • Dependencias
      • Package scripts
    • Sistema de módulos
    • Flujo de control asíncrono
      • Callbacks
      • Promises
      • Async/await
  • OAuth 2.0 / OpenID Connect
    • Echemos un vistazo
    • OpenID Connect
    • OAuth 2.0
      • Mejores prácticas de cómo manejar tokens
  • OpenShift
    • Echemos un vistazo
  • OWASP
    • Echemos un vistazo
  • SAML 2.0
    • Echemos un vistazo
  • SSL / TLS
    • Echemos un vistazo
  • Terraform
    • Echemos un vistazo
Powered by GitBook
On this page
  • Objetivos
  • Inicio de modo inspección

Was this helpful?

  1. Node.js

Depuración y diagnóstico

El proceso de depuración en Node.js debe empezar en modo Inspect que expone un protocolo remoto que puede ser conectado y permite diagnosticar a través de puntos de interrupción.

PreviousLímite de pila de datos (Stack trace)NextEnfoque práctico de javascript

Last updated 3 years ago

Was this helpful?

Objetivos

  • Iniciar un proceso en modo inspect.

  • Conectar un proceso en modo inspect para depurarlo.

  • Comprender que son los breakpoints (puntos de ruptura o interrupción).

Inicio de modo inspección

Node.js soporta el protocolo de depuración remota como chrome DevTools.

Para activar el modo inspección: node --inspect index.js

Activar el modo inspección pero iniciando con un breakpoint activo (Inspect Break mode) al inicio del programa: node --inspect-brk index.js

Si no utilizamos los flags anteriores, la aplicación se inicializará por completo y estará realizando tareas asíncronas antes de que pueda establecer los breakpoints.

Ejemplo utilizando Chrome Devtools:

Vamos a crear un pequeño programa con el algoritmo recursivo de fibonacci.

Ejecutamos en modo inspección:

Después de ejecutar el comando node --inspect-brk index.js, el protocolo de depuración remota utiliza WebSockets (ws://), y así es como Chrome detectará que el depurador está escuchando automáticamente.

Abrimos Chrome e ingresamos a chrome://inspect/#devices:

Click en inspect y nos abrirá una instancia DevTools que está conectada con el proceso de Node:

Si deseamos que haga una pausa en excepciones detectadas, debemos dar click en "Pause on caught exceptions":

Esta funcionalidad es útil para localizar excepciones dentro del código, ya que nos muestra la pila de llamadas (Call Stack).

Agreguemos un breakpoint y veamos el comportamiento del call stack:

Después de agregar el breakpoint con un click sobre la línea que deseamos evaluar, y damos click en el primer botón (azul), se reanudará la ejecución del programa e iniciará la trazabilidad de ejecución en el panel de call stack.

En algunos casos se puede agregar un breakpoint directamente en el código, utilizando el flag --inspect, y agregándole en el código la declaración debugger (línea 5):

No es buena práctica utilizar esta estrategia (debugger) por el impacto de rendimiento.

Para mayor información acerca de otras herramientas para depurar:

https://nodejs.org/en/docs/guides/debugging-getting-started/