【转】node.exe调试JavaScript代码
node.exe调试JavaScript代码
目的:
Console.log可以打印一些信息,光有log还不够,当程序出现问题时通过log可以定位到错误位置,但是当我们想查看错误现场的变量时,log就无能为力了,一般情况下我们不会把所有的变量都打印出来。此时就需要断点的功能了,在程序里边打上断点,直接定位到错误位置,分析错误现场确认错误原因。
三种模式:
nodejs内部提供一个debug机制,可以让程序进入debug模式,供开发者一步一步分析代码发现问题。
共有3中启动参数可以让程序进入debug模式
node debug app.js
node --debug app.js
node --debug -brk app.js
3种模式在调试形式上有一定区别。
1.node debug app.js
1).这种方式启动程序,程序会进入debug模式,并运行到启动文件的第1行就停止,等待开发者下发往下走的命令
2).这种方式启动程序,直接在当前cmd中进入调试模式
2.node --debug app.js
1).这种方式启动程序,程序会进入debug模式,并运行完所有代码。这种启动方式往往用于程序启动的过程中不需要调试,通过触发时间进入回调函数的情况,比如在某个http请求中打上断点,等待客户端访问后进入断点
2).这种方式启动程序,会开启一个TCP的端口监听,在本cmd中不进入调试模式,需要另外开启终端用node debug 命令连接调试端口
命令为 node debug localhost debug端口
或者 node debug p node进程id
3.node --debug-brk app.js
1).这种方式启动程序,程序会进入debug模式,但是不会运行代码,直到有一个终端连接到了debug端口,才开始执行代码,并在第1行进入断点
2).这种方式启动程序,会开启一个TCP的端口监听,在本cmd中不进入调试模式,需要另外开启终端用node debug 命令连接调试端口
进入debug模式后,可以通过一些命令来设置断点、取消断点以及控制程序执行流程
常用命令:
1.流程控制相关
- cont, c - Continue execution
- next, n - Step next
- step, s - Step in
- out, o - Step out
- pause - Pause running code (like pause button in Developer Tools)
2. 断点设置取消相关
- setBreakpoint(), sb() - Set breakpoint on current line
- setBreakpoint(line), sb(line) - Set breakpoint on specific line
- setBreakpoint('fn()'), sb(...) - Set breakpoint on a first statement in functions body
- setBreakpoint('script.js', 1), sb(...) - Set breakpoint on first line of script.js
- clearBreakpoint('script.js', 1), cb(...) - Clear breakpoint in script.js on line 1
3. 变量查看相关
- backtrace, bt - Print backtrace of current execution frame
- list(5) - List scripts source code with 5 line context (5 lines before and after)
- watch(expr) - Add expression to watch list
- unwatch(expr) - Remove expression from watch list
- watchers - List all watchers and their values (automatically listed on each breakpoint)
- repl - Open debugger's repl for evaluation in debugging script's context
repl模式下可以输入变量名查看变量内容
举例:
1. node debug
从第一行代码开始进入断点,命令n进入下一行
2. node --debug
cmd1 开启调试端口
cmd2 连接调试端口
设置断点,取消断点
cmd1 过了一分钟才继续打印
用进程id的方式连接调试模块
上图可以看到pid为4436
repl模式
参考资料:
http://www.cnblogs.com/tzyy/p/5028348.html
http://www.cnblogs.com/dolphinX/archive/2013/12/22/3485345.html
【转】node.exe调试JavaScript代码的更多相关文章
- sublime text 内调试Javascript代码
转自:sublime内调试Javascript代码 之前用webstorm, 可以直接调试js, 在浏览器中也可以调试js,最近换了sublime text, 在想它是否支持调试js代码,于是找到了这 ...
- 利用chrome调试JavaScript代码
看见网上很多人问怎么用chrome调试JavaScript代码,我也对这个问题抱着疑问,但是没有找到一篇能用的中文文章(可能我的google有问题),也不知道怎么点出一篇E文的,感觉作者写得不错,所以 ...
- VS2010Web默认的浏览器设置和VS里调试JavaScript代码的设置
前言 重装系统后,VS调用的Web浏览器不是IE了,VS调式不了JavaScript代码了.这两天一直在试终于搞定了.这里查找的问题当然主要是VS里面调式JavaScript代码了. 第一种方式设置V ...
- 如何利用好chrome控制台这个神器好好调试javascript代码
上面的文章已经大致介绍了一下console对象具体有哪些方面以及基本的应用,下面简单介绍一下如何利用好chrome控制台这个神器好好调试javascript代码(这个才是我们真正能用到实处的地方) 1 ...
- 如何调试Javascript代码
转自原文如何调试Javascript代码 目前,常用的浏览器IE.Chrome.Firefox都有相应的脚本调试功能.作为我们.NET 阵营,学会如何在IE中调试JS就足够了,在掌握了IE中的调试方法 ...
- 如何更方便地调试javascript代码
开发者工具 现在一般的浏览器都内置了开发者工具,快捷键F12可以打开,如Chrome浏览器下,Sources面板下找到对应的js文件 这是首选方法,但是对于SPA程序(比如easyui),可能找不到内 ...
- Firefox 调试 JavaScript 代码
第一步 新建 html 或者 jsp 文件 文件内容 <!DOCTYPE html> <html> <head> <meta charset="u ...
- 如何调试Javascript代码以及网页代码
做过网页开发的都知道,不过你是用php还是asp.net以及java开发的网站,在开发过程中,web网页展示页面肯定会出现或多或少的问题.这里我推荐使用谷歌浏览器进行Web网页的调试以及错误信息定位. ...
- 用WebDev.WebServer40.EXE调试VS代码
1.找到WebDev.WebServer40的录井,一般位于C:/Program Files (x86)/Common Files/Microsoft Shared/DevServer/10.0/We ...
随机推荐
- Visual studio之C# 调用系统软键盘(外部"osk.exe")
背景 App需要调用系统软键盘输入数据,自己去实现软键盘有些复杂,现在又是急需,没时间去研究实现软键盘,所以只能调用系统软键盘. 正文 需要添加命名空间, using System.Diagnosti ...
- 11-spring学习-表达式语言
1,表达式语言的操作形式以及处理流程. 2,在spring中各种表达式字符串的编写. SPEL(spring Express language) 表达式入门 观察一下表达式: 范例:表达式操作 1)基 ...
- mysql联合查询union
mysql联合查询,对多表进行组合查询 使用 UNION ALL 命令实例 显示所有 使用UNION 过滤重复的 使方法 select * from (SELECT id,name as usenam ...
- ((void *) 0)的含义和void的一些细节
一.在c语言中,0是一个特殊的值,它可以表示:整型数值0,空字符,逻辑假(false).表示的东西多了,有时候不好判断.尤其是空字符和数字0之间. 为了明确的指出,0是空字符的含义,用用到了: (() ...
- 谷歌上不去了,长久解决方式。能够稳定高速上Google和Gmail
稳定上Google的神器 国内Google很不稳定.速度慢且常常上不去,通过"我要上Google".能够安全稳定地使用Google.Gmail.Google+等平时须要特殊手段才干 ...
- erlang supervisor中启动普通的进程
文字部分转自: http://1234n.com/?post/qou3eb supervisor的子进程 一开始使用supervisor的时候,我用的是init/1返回子进程规格列表的方式,并且所有子 ...
- opencv读取图像输入到tensorflow模型中进行运算【cpp】
void TransformMatToTensor(const cv::Mat &image, Tensor &input_tensor, int input_width, int i ...
- 基于C#和Asp.NET MVC开发GPS部标视频监控平台
基于C#和Asp.NET MVC开发GPS部标监控平台 目前整理了基于.NET技术的部标平台开发文章,可以参考: 1.部标Jt808协议模拟终端的设计和开发 2.C#版的808GPS服务器开发-> ...
- javaweb项目运行时错误
1.Debug模式下进入ThreadPoolExecutor.class的解决方式 进入window-->preferences-->java-->debug-->去掉Susp ...
- PHP学习笔记(15)PDO数据库操作+AJAX无刷新技术删除用户
pdo.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...