Depuración de Node.js (práctica)

Documentos relacionados
Dpto. Lenguajes y Ciencias de la Computación E.T.S.I. Telecomunicación. Laboratorio de Programación Uso del depurador en Dev-C++

UNIDAD 4. MODIFICAR TABLAS DE DATOS

Microsoft Office Word

Fundamentos de Ordenadores. Depurar programas usando Nemiver

Funciones básicas del depurador

Mozilla Firefox. Barra de. Barra de navegación. menús. Barra de. Barra de dirección. marcadores

Pasos para instalación de los paquetes Xampp y PosgreSql en Windows:

En este manual se propone utilizar el SkyDrive del correo electrónico del CONALEP, sin embargo también es

Mi primer programa en Code::Blocks

Prácticas con VISUAL-CORE. Sesión práctica 0: Instrucciones de instalación del programa VISUAL-CORE

Manual de instalación y actualización de la aplicación Sigma

Manual del Alumno - Blackboard

Para tener en cuenta

En la parte inferior de la pantalla se podrá ver el estado de la última copia y la fecha y hora actual.

PASOS PARA CREAR FUNCIONES CON VBA

Manual de Usuario de la Aplicación Web Gestión de Convenio y Becas - RELEXT 2015 UNIVERSIDAD ESTATAL PENÍNSULA DE SANTA ELENA

Descarga, Instalación y Registro Versiones Educativas Alumno Editex

Tutorial de MuseScore, editor de partituras Primeros pasos

Compresión de ficheros

FACULTAD DE INGENIERÍA

ENTORNO DE DESARROLLO Y COMPILACIÓN DE PELLES C

MANUAL DE USUARIO DEL UNIFIED IM

Herramientas Google Aplicadas a Educación. Primera parte

MICROSOFT EXCEL 2007

Módulo Catálogo Virtual -Biblioteca IGP Instructivo de uso

CÓMO BLOQUEAR LOS SITIOS WEB EN INTERNET EXPLORER

Organización de la información en disco: archivos y carpetas

Guía de Inicio Rápido Mac Respaldo en línea

En esta lección vamos a ver más utilidades y opciones sobre la

Tutorial de GDB. Algoritmos y Estructuras de Datos II. Algoritmos y Estructuras de Datos II () Tutorial de GDB 1 / 1

Evaluación 1: Entorno y primeros pasos

RESOLUCIÓN DE PROBLEMAS EN EL PROCESO DE FIRMA

Manual de Usuarios: Sistema de Registro de Alfabetizados y Cursos del Plan Nacional de Alfabetización Tecnológica (PNAT)

Cómo crear un Juego de preguntas en Educamóvil

REQUISITOS NECESARIOS PARA LA INSTALACIÓN Y FUNCIONAMIENTO DE LA APLICACIÓN

CAPÍTULO 1. ELEMENTOS DE EXCEL

Guía rápida para el Uso de Evaluación Modular Q10 Académico, desde un Perfil Docente

CORSAIR GAMING RATÓN GUÍA DE INICIO RÁPIDO DEL SOFTWARE

Contenido. Requisitos Generales. Configuración de acceso al portal de consulta remota utilizando Windows XP

Depurar programas

Tutorial MPLAB v6.x PROYECTO. Creación de Proyecto

UNIDAD 1. writer PRIMEROS PASOS. CURSO: LibreOffice

MICROSOFT WORD 2016 Básico

Depuración de código Tcl/Tk

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

Novell. Novell Teaming 1.0. novdocx (es) 6 April 2007 EXPLORAR EL PORTLET DE BIENVENIDA DESPLAZARSE CON NOVELL TEAMING NAVIGATOR.

Creación de la KB. Page1. Video filmado con GeneXus X Evolution 3. Vamos a ejecutar a GeneXus

Subtitular Vídeos José Luis Fernández. I.E.S. Leiras Pulpeiro

Laboratorio. Instalación de Visual Studio Community. Back To Basics Instalando Visual Studio Community. Versión: 1.0.

MANUAL PARA PHOTO STORY 3

MANUAL DE INSTALACIÓN COI

Problemática con la actualización de Java 7 update 45

INSTITUTO ELECTORAL DEL ESTADO DE MÉXICO SECRETARÍA EJECUTIVA UNIDAD DE INFORMÁTICA Y ESTADÍSTICA

Gestión de bases de datos de mysql desde Dreamweaver

Ingeniería del Software Swing

Manual de Usuario Webmail Horde

UNIVERSIDAD DE ALCALÁ. E.U.P. DEPARTAMENTO DE ELECTRÓNICA.

MANUALES DE USO DE CENGAGE: Usuario lector

INNOVACIONES TECNOLÓGICAS UNOMAS.EC S.A. MANUAL DE USUARIO. Bodegas Móvil

1

INSTITUCION EDUCATIVA MANUEL ANGEL ANACHURY AREA: TECNOLOGIA E INFORMATICA

Curso de Delphi (y VI)

Cómo descargar, instalar y verificar JAVA

FORMATO CONDICIONAL EN EXCEL

MANUAL DE SYS APOLO - CONFIGURACIÓN

Manual de Windows XP Copyleft - Jorge Sánchez 2005

Elementos esenciales de Power- Point

Suscripción DreamSpark

Constructor de sitios. Manual de Usuario

Tutorial de NetCDF. Copyright Esri All rights reserved.

9.1. Insertar filas en una hoja

Actualización de versión en red descargada de internet

MOODLE 1.9 BASE DE DATOS

UNIDAD I PROCESADOR DE TEXTOS

Cómo administrar una cuenta de correo electrónico?

Manual de instalación de programas de Sucesiones y Donaciones

Fundamentos de PowerPoint

Manual de uso ERIC MOBILE: ACTIVACIÓN Y USO BÁSICO

Pasos para incluir su firma de mail:

LA PIZARRA SMARTBOARD

MANUAL PARA COMBINAR CARTAS POR CORRESPONDENCIA

Adaptador de red USB Wireless-N de. doble banda GUÍA DE INSTALACIÓN RÁPIDA. Contenido del paquete

Manual de usuario aplicativo Offline pruebas Supérate con el saber 2.0

PRUEBA DE ACCESO A LAS ENSEÑANZAS UNIVERSITARIAS OFICIALES DE GRADO 2016

Habilitar Carpeta Virtual en su PC o Mac

Guía de navegación del estudiante

Aplicativos: Cómo se realiza la descarga e instalación de Aplicativos AFIP?

OFICINA DE REGISTRO VIRTUAL DE ENTIDADES LOCALES

3. Selección del paquete termodinámico de fluidos: Para las propiedades de los componentes se usará el paquete NRTL. Dar clic en Fluid Packages (figur

4. Directorio. 4.1 Institución. Introducción

Área Académica: Licenciatura en Derecho. Profesor: Lic. Virginia Argüelles Pascual

MINI GUIA: CONEXIÓN SEPAM CON USB WINDOWS - XP

Tabletas en el aula. Gestión de usuarios. Edición Autor: Fernando Posada Prieto canaltic.com

APLICACIÓN WEB PARA LA GESTIÓN DEL DOCUMENTO DE ACTIVIDADES Y PLAN DE INVESTIGACIÓN DE DOCTORADO

Guía para la Instalación o Actualización del Plugin de ordenador

UNIVERSIDAD DEL CARIBE DIRECCION DE REGISTRO INSTRUCTIVO PARA REINSCRIPCIÓN y MODIFICACIÓN

SESIÓN 6 INTRODUCCIÓN A POWER POINT

Transcripción:

Depuración de Node.js (práctica) Tiempo estimado: 45min El objeto de esta práctica es afianzar, reforzar y consolidar los conocimientos teóricos presentados en la lección. Al finalizarla, el estudiante: Habrá instalado la extensión Node.js V8 Inspector de Chrome. Habrá trabajado con el inspector V8, definido puntos de interrupción y observadores, ejecutado paso a paso, consultado la pila de llamadas y usado la consola de consulta. Objetivos En esta práctica, vamos a crear un pequeño script Node de dos módulos con el que trabajar la depuración. Prerrequisitos Para la realización de la práctica, es necesario Chrome. Recomendándose la última versión estable del navegador. Creación del proyecto Para comenzar, vamos a crear el proyecto de la aplicación. 1. Abrir una consola. 2. Crear el directorio de la práctica e ir a él. 3. Crear el archivo index.js con el siguiente contenido: console.log(" Hola Mundo!"); 4. Ejecutar el script: $ node index.js Hola Mundo! $ Instalación de la extensión Node.js V8 Inspector A continuación, vamos a instalar la extensión Node.js V8 Inspector para facilitar la conexión al inspector: 1. Abrir Chrome. 2. Ir a las extensiones: chrome://extensions. 3. Hacer clic en Get more extensions al final de la página: 4. Buscar la extensión y hacer clic en + ADD TO CHROME: 5. Confirme la solicitud de instalación. Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 1

A continuación, se muestra el botón que hay que usar para acceder a la extensión: Creación de un módulo de prueba Vamos a crear un módulo de prueba que exporte una función con la que calcular el número de Fibonacci: 1. Crear el archivo fibo.js: module.exports = exports = function fibo(n) { var res; if (n < 2) res = 1; else res = fibo(n - 1) + fibo(n - 2); return res; }; Prueba de depuración A continuación, vamos a preparar el módulo principal para que dado un número, pasado en la línea de comandos, calcule su número de Fibonacci: 1. Modificar el archivo index.js: //imports const fibo = require("./fibo"); //data const n = Number(process.argv[2]); //main console.log(fibo(n)); 2. Guardar cambios. 3. Invocar el script index.js en modo depuración, esto es, bajo la monitorización del inspector V8: $ node --inspect --debug-brk index.js 15 Debugger listening on port 9229. Warning: This is an experimental feature and could change at any time. To start debugging, open the following URL in Chrome: chromedevtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspect or.html?experiments=true&v8only=true&ws=localhost:9229/ba9ceace-bee2-4c68-a5bf- 74ec4d059161 Observe que node indica en qué puerto está escuchando el inspector, 9229, y el URL a utilizar para acceder al inspector. 4. Abrir Chrome. 5. Hacer clic en la extensión Node.js V8 Inspector: Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 2

6. Hacer clic en Launch V8 Inspector. La extensión conectará al puerto indicado y abrirá Chrome DevTools con el script bajo depuración: Abrir Chrome DevTools también es posible mediante el URL chrome-devtools que muestra node. Pero es más fácil hacerlo mediante esta extensión. 7. Desplegar todos los paneles para ver su contenido: Watch, Call Stack, Scope, Breakpoints... 8. Añadir un observador para visualizar el valor de la variable n. Para ello, hacer clic en el botón + del panel Watch: A continuación, escribir n y pulsar INTRO: 9. Añadir un punto de interrupción manual en la línea 8 del archivo index.js. Para ello, editar el archivo en DevTools y hacer clic en el número de línea: Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 3

10. Ir al panel Breakpoints y observar que se lista el punto de interrupción: 11. Ir al panel de ejecución paso a paso. Sin pulsar ningún comando, mostrar sus respectivas ayudas. Para ello, situar el cursor del ratón encima de cada botón y esperar a que la ayuda aparezca: 12. Hacer clic en el comando Resume script execution (F8) para que ejecute hasta el primer punto de interrupción: La línea sombreada indica la línea en la que estamos detenidos. Su ejecución todavía no se ha llevado a cabo. 13. Consultar detenidamente los paneles Watch, Call Stack, Scope y Breakpoints. El observador muestra el valor actual de la variable n. Antes era undefined, ahora 15. En Scope, encontramos las variables del contexto de ejecución que hay en la línea actual. Por un lado, tenemos el contexto local, bajo Local; y el global, bajo Global: Despliéguelos. El panel Breakpoints muestra los puntos de interrupción definidos. El sombreado en amarillo es en el que nos encontramos actualmente. 14. Ejecutar el comando de ejecución paso a paso Step into next function call (F11). Si no recuerda cuál es, sitúese encima de los botones del panel de ejecución paso a paso y espere a que salga la ayuda. Recordemos que este comando tiene como objeto ejecutar la línea actual y entrar en la primera función invocada dentro de ella, deteniéndose en la primera línea del cuerpo de la función invocada. Como puede observar, se mete en el archivo bootstrap_node.js, un módulo core que nada tiene que ver con lo que nosotros deseamos depurar. Está fuera de nuestro ámbito. Vamos a indicárselo al depurador mediante la ocultación o blackboxing. 15. Ir al panel Call Stack. 16. Seleccionar el marco de pila activo, o sea, el que se encuentra arriba del todo y se encuentra Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 4

señalado por una flecha: 17. Mostrar el menú contextual del marco, haciendo clic en el botón derecho del ratón, y seleccionar Blackbox Script: Esto creará un patrón en la lista de ocultación. La cual podemos consultar en cualquier momento. Para ello, pulsar F1 y seleccionar Blackboxing: Aparecerá la lista de patrones de ocultación: 18. Crear un nuevo patrón para los archivos ubicados en la carpeta internal. Para ello, hacer clic en Add pattern e indicar el patrón: A continuación, hacer clic en Add para añadirlo a la lista. 19. Añadir el patrón para el archivo vm.js: Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 5

20. Añadir los siguientes patrones: ^console\.js$ ^tty\.js$ ^net\.js$ ^util\.js$ Si durante la práctica aparece algún otro módulo que no sea index.js o fibo.js, añádalo a la lista. 21. Cerrar Chrome. 22. Ir a la consola. 23. Ejecutar de nuevo el script en modo depuración: $ node --inspect --debug-brk index.js 15 24. Abrir Chrome y el inspector mediante la extensión Node.js V8 Inspector. 25. Hacer clic en el comando paso a paso Resume script execution (F8) para que ejecute hasta el primer punto de interrupción. 26. Ejecutar el comando de ejecución paso a paso Step into next function call (F11). Observe que el inspector se queda en la misma línea, pero resalta la invocación a la función fibo(): El comando ha entrado en la proposición de la línea interrumpida y se ha quedado en la invocación, pero todavía no la ha realizado. 27. Volver a ejecutar el comando de ejecución paso a paso Step into next function call (F11). Esta vez, entramos en el módulo fibo.js, donde tenemos definida la función fibo() y se queda en su primera línea: Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 6

28. Consultar el panel Call Stack y observar que se ha añadido el marco de pila para la llamada a fibo(): La proposición que invocó a la función se representa mediante su propio marco. Justo el que está debajo del activo. Observe que a la derecha aparece el nombre del archivo y la línea. 29. Ejecutar el comando Step into next function call (F11). A medida que vaya ejecutando, mantenga desplegados los paneles Watch, Call Stack y Scope para ver cómo muestran la situación de cada momento. Watch mostrará que el valor de la variable n va reduciéndose tras cada invocación a fibo(). El panel Call Stack mostrará los marcos de pila para cada invocación. Recuerde que la función fibo() es recursiva y se debe ejecutar varias veces. Cada invocación se representará mediante su propio marco. Siendo el que está arriba del todo el activo. Repítalo unas 10 veces. Sea paciente y observador. 30. Ejecutar el comando Step over next function call (F10) unas 10 veces. Observe los paneles. 31. Ejecutar el comando Step out of current function (Shift+F11). Con este comando, se sale del marco de pila activo. Continúe hasta que la pila deje de tener marcos de pila para la función fibo(). Esto es, hasta que vuelva al archivo index.js, donde se invocó la función recursiva fibo(): 32. Ejecutar el comando Resume script execution (F8). Observe que se alcanza el final del script. El observador de la variable n se encuentra a undefined y la pila de llamadas se encuentra vacía. 33. Cerrar Chrome. Al cerrar Chrome, se cerrará la sesión de depuración. 34. Ir a la consola. 35. Observar el resultado impreso por el script: 987 Definición de puntos de interrupción híbridos El objetivo ahora es mostrar cómo definir puntos de interrupción híbridos. Recordemos, aquellos que se Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 7

asocian a una determinada línea e incorporan una condición. 1. Ejecutar el script a depurar: $ node --inspect --debug-brk index.js 15 2. Abrir Chrome y, a continuación, el inspector mediante la extensión Node.js V8 Inspector. 3. Ejecutar el comando paso a paso Resume script execution (F8). 4. Ir al archivo fibo.js. Para ello, vaya al panel Sources, donde se encuentran los archivos de código fuente abiertos por el inspector hasta ese momento, y búsquelo bajo el nodo file://: 5. Añadir un punto de interrupción en la línea 4: 6. Mostrar el menú contextual del punto de interrupción y seleccionar Edit breakpoint : 7. Añadir la expresión de interrupción siguiente: Esto hará que el depurador se detenga en esa línea sólo cuando el valor del parámetro n sea 7. Observe que el marcador del punto de interrupción ha cambiado de color: 8. Ir al panel Breakpoints para ver los puntos de interrupción definidos: Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 8

9. Volver al archivo index.js. 10. Ejecutar el comando paso a paso Resume script execution (F8) para que el inspector ejecute hasta el siguiente punto de interrupción. En nuestro caso, ubicado en el archivo fibo.js. Observe los paneles Watch y Call Stack. Si no hubiese sido un punto de interrupción híbrido, se habría parado en la primera invocación de la función. Pero lo ha hecho en aquella que tiene el valor de n igual a 7, según establece su condición adjunta. 11. Volver a ejecutar el comando paso a paso Resume script execution (F8) para que el inspector ejecute hasta el siguiente punto de interrupción. Repetirá el mismo. Ejecútelo tantas veces como sea necesario hasta terminar. Observe que en todas las ejecuciones n vale 7, de ahí que se pare. Pero cuando deja de valer 7, ya no se detiene. 12. Cerrar Chrome. Consola de consulta A continuación, vamos a ver cómo usar la consola del inspector como otro medio para consultar el contexto de ejecución en el que se encuentra detenida la ejecución: 1. Ejecutar el script a depurar: $ node --inspect --debug-brk index.js 15 2. Abrir Chrome y el inspector mediante la extensión Node.js V8 Inspector. 3. Mostrar la consola de consulta. Para ello, se puede pulsar la tecla Esc o bien seleccionar Show console drawer del menú del depurador: Esto mostrará una consola similar al del intérprete interactivo de node: 4. Consultar el valor de la variable n: 5. Ejecutar el comando paso a paso Resume script execution (F8). 6. Ir a la consola. 7. Consultar el valor de la variable n: Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 9

8. Cerrar Chrome. Copyright 2016 nodemy.com. Reservados todos los derechos. Depuración de Node.js (práctica) 10