设为首页 收藏本站
查看: 908|回复: 0

[经验分享] 调试nodejs程序

[复制链接]

尚未签到

发表于 2017-2-21 09:33:23 | 显示全部楼层 |阅读模式
1先来一段测试代码
var http  = require('http');
function onRequest(req,res){
var content = "hello, debug test";
var conLength = content.lenggth;
res.writeHead(200,{
'content-length': conLength,
'content-type': 'text/plain'
});
res.end(content);
}
http.createServer(onRequest).listen(8080);
保存为debug_server.js
2 debug用到的几个关键命令
■ cont —继续.
■ next —跳到下一条执行语句.
■ step —跳转入下一条语句中,否则的话跳过执行
■ out —从当前执行函数中跳出
■ backtrace —显示当前调用执行堆栈
■ repl —启动Nodejs REPL,可以查看变量值或执行代码
■ watch(expr) —将表达式加入监控列表
■ list( n ) —列出当前执行代码的前/后n行
3 调试
命令:node debug debug_server.js
输出:
< debugger listening on port 5858
connecting... ok
break in C:\Users\xxx\node\debug_server.js:1
  1 var http  = require('http');
  2
  3 function onRequest(req,res){
我们怀疑第5行有问题
debug> list(5)
  1 var http  = require('http');
  2
  3 function onRequest(req,res){
  4     var content = "hello, debug test";
  5     var conLength = content.lenggth;
  6     res.writeHead(200,{
debug> setBreakpoint(5)
  1 var http  = require('http');
  2
  3 function onRequest(req,res){
  4     var content = "hello, debug test";
* 5     var conLength = content.lenggth;
  6     res.writeHead(200,{  
在第5行设置断点,*表示断点所在位置
在另外一个命令窗口发出请求curl –i http://localhost:8080
你会发现两点:
(1)请求curl命令没有反应
(2)在node debug session下面输出:
break in C:\Users\xxx\node\debug_server.js:5
  3 function onRequest(req,res){
  4     var content = "hello, debug test";
* 5     var conLength = content.lenggth;
  6     res.writeHead(200,{
  7             'content-length': conLength,
我们跳过这一行
debug> next
break in C:\Users\xxx\node\debug_server.js:7
* 5     var conLength = content.lenggth;
  6     res.writeHead(200,{
  7             'content-length': conLength,
  8             'content-type': 'text/plain'
  9     });
现在启动node repl来查看当前变量的值
debug> repl
Press Ctrl + C to leave debug repl
> content
'hello, debug test'
> conLength
>  
我们发现content的值跟预想的一样,但是conLength的值却没有,这就是问题所在了。
4 其他调试方式
当然了我们还可以在代码中插入类似console.log(变量名)的方法来打印变量的值进行调试

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345066-1-1.html 上篇帖子: nodejs的使用感受 下篇帖子: windows下《七天学会NodeJS》学习笔记之一--NodeJS基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表