debugging - vscode - Cómo depurar adecuadamente node.js con el inspector de nodos?
node inspector manager (7)
Tengo una aplicación creada en node.js y uso el inspector de nodos para depurar. Pero es bastante difícil debido a esto:
- Mis puntos de interrupción nunca se guardan después de reiniciar el servidor
- No puedo poner un punto de interrupción en un archivo que aún no se ha cargado; así que tengo que pasar del primer guión al que quiero; ¡REALMENTE DOLOROSO!
¿Cómo se depura node.js con el inspector de nodos?
Los videos sobre cómo usar node.js son bastante engañosos ya que todo está en un módulo ...
http://www.youtube.com/watch?v=AOnK3NVnxL8
o este, los scripts que aparecen ya están cargados en el primer script
http://www.youtube.com/watch?v=HJOH0-g8f6E&feature=mfu_in_order&list=UL
Editar:
Nadie puede responder esta pregunta? : s
El problema con los puntos de interrupción del lado del cliente es que es difícil hacer un seguimiento de la posición del punto de interrupción cuando cambia el archivo. A diferencia de un editor, no puede realizar un seguimiento de las líneas que se cambian, etc.
Sugerencia de @RyanOlds de usar depurador; las declaraciones también son buenas, pero debe asegurarse de que el depurador esté conectado antes de que se evalúe la declaración, ya que de lo contrario se ignorará. Comenzar con --debug-brk es una buena forma de forzar esto, porque la ejecución se pausa en la primera línea, lo que le permite adjuntar el depurador y luego continuar la ejecución.
Puede intentar la depuración con el depurador interno del nodo.
Editar: Sin embargo, de acuerdo con v8 DebuggerProtocol es posible establecer puntos de interrupción en secuencias de comandos que aún no se han cargado Y se pueden establecer puntos de interrupción por función, secuencia de comandos y más. Por lo tanto, debería ser posible que el inspector de nodos realice un seguimiento de sus puntos de interrupción (en una sesión, o lo que sea). Sin embargo, no lo hace ahora.
¿Tal vez si v8 permite que un determinado fragmento de código desencadene un punto de interrupción, similar al depurador de nodos? Editar: Sí, deberías poder disparar un salto arrojando cualquier excepción anterior (atrapada o no).
En javascript puede establecer puntos de interrupción utilizando el debugger;
declaración. Sin embargo, solo pausarán el nodo si un depurador está realmente conectado.
Entonces, inicie su script de nodo usando
node --debug-brk myfile.js
luego, inicie el inspector de nodos y presione el botón de reproducción para continuar al siguiente punto de interrupción y este llegará a su debugger;
punto de interrupción (al menos eso funciona para mí ATM)
(como se menciona en los comentarios: en las versiones recientes de nodo ya no tiene que instalar por separado el inspector de nodos. Si node --debug-brk --inspect myfile.js
nodo utilizando el node --debug-brk --inspect myfile.js
, obtendrá una url que iniciará el depurador en su navegador).
aún necesita un clic adicional después de reiniciar, pero al menos sus puntos de interrupción se guardan.
si su punto de corte no se golpea automáticamente, pero solo después de alguna acción del usuario no necesita el --debug-brk
por supuesto.
Esto está integrado ahora que incluye guardar puntos de interrupción . Acabo de probarlo en el nodo 7.3.0.
node --inspect --debug-brk app.js
Esto imprime una url como esta
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/c3d5d93e-9d27-41b9-a4da-607e43c9d4f8
Pon eso en Chrome y listo.
Si desea omitir copiar / pegar la url, haga esto:
npm install -g inspect-process inspect --debug-brk app.js
Lamentablemente, el método de inspect-process
no retiene los puntos de interrupción :-(.
Aquí hay un video que hice: https://youtu.be/rtZKUnks6jI
Intente utilizar IntelliJ WebStorm: hay una versión de prueba gratuita y las licencias no son escandalosamente caras. Le permite guardar puntos de interrupción en todos sus archivos antes de iniciar su propio proceso de nodo interno y los recuerda en reinicios de proceso.
Estoy de acuerdo: el inspector de nodos parece brillante, pero es bastante inútil a menos que su aplicación tenga un lugar claro para establecer un punto de interrupción en el script de nivel superior justo después de que se carguen sus archivos fuente, pero antes de llegar al área que desea depurar. Puede estructurar su propio código de esta manera, pero no tendrá tanta suerte con otras bibliotecas útiles que quiera incluir. Además ... ¿por qué una herramienta de depuración debería dictar la estructura de tu proyecto?
Olvidar los puntos de interrupción es extremadamente inútil ... la mayoría de mis ejecuciones de depuración llevan más de un tutorial, como en el código de otras personas es fácil pasar de largo donde usted quiere estar.
La nueva versión (0.3.x) del inspector de nodos guarda los puntos de interrupción en el almacenamiento local del navegador y los restaura automáticamente.
Puede usar node-codein para la inspección. No hará puntos de interrupción de tiempo de ejecución, pero debería facilitar el proceso de inspección.
También vale la pena señalar .. vscode tiene un gran depurador para el nodo.
https://code.visualstudio.com/
Disponible en Mac, Linux y Windows.
Tiene puntos de interrupción de tiempo de ejecución (sin la necesidad de escribir depuradores, declaraciones), admite relojes variables, e incluso tiene una ventana de pila de llamadas (muy agradable).
Todo está tan automatizado, ahora es mi goto sobre el texto sublime cuando uso nodejs (y I LOVE sublime).