`

nodejs远程调试

 
阅读更多

一,eclipse安装nodejs和chromedevtools插件即可调试,插件的安装配置上一篇中已经说明。

(1)要想调试,启动node服务时需要加个参数: 

命令行模式:

     node --debug xxx.js

    node --debug=0000 xxx.js

eclipse模式:


   

这是开启调试端口,不指定,默认端口是5858

 

 

 

 

二、远程调试(非本地调试)

 

我们的NODE工程由于用到了连接mysql用的mysql-libmysqlclient 包,这个包中有c程序,在windows运行比较困难,于是我们的工程只能在linux上运行。(为了便于开发,我们将linux上的node工程目录共享给windows,这样就可以在windows上修改代码,linux上运行了。

共享需要在linux上安装 samba ,这里不介绍了。)

此时的问题是用eclipse远程调试linux上的代码,无法连接:

 

Failed to connect to Standalone V8 VM

Failed to get version



 

解决办法
第一种是远程机编译之前修改nodejs源码,修改deps/v8/src/platform_posix.cc 文件中的Socket::Bind 方法:

 

boolPOSIXSocket::Bind(const int port) {
  if (!IsValid())  {
    return false;
  }
 
  sockaddr_in addr;
  memset(&addr, 0, sizeof(addr));
  addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
  addr.sin_port = htons(port);
  int status = bind(socket_,
                    BitCast<struct sockaddr*>(&addr),
                    sizeof(addr));
  return status == 0;
}

 

 

红色的改成   INADDR_ANY,之后用修改好的nodejs源码在linux上安装。

 

第二种:远程机的127.0.0.1 5858 映射到其他端口,这里也不详述了。

 

第一种没有试验过,第二种使用中,可以成功调试。

 

ps:  在eclipse中启动nodejs(使用了supervisor) 之后,关闭服务不起作用,需要手动结束node进程。

 

 三、自动部署(重启node

安装 supervisor ,g 是安装成全局变量

npm install -g supervisor

不使用 node  xxx.js启动node工程 ,而是:

 

supervisor  xxx.js  

 

 

 

  • 大小: 57 KB
  • 大小: 110.2 KB
  • 大小: 12.9 KB
分享到:
评论
6 楼 leichenlei 2014-10-10  
liuyuanli的微博 写道
我试了一下Linux,用SSH成功了,你是用SSH吗?


成功了就好。
5 楼 leichenlei 2014-10-10  
liuyuanli的微博 写道
我试了一下Linux,用SSH成功了,你是用SSH吗?


linux不熟,linux端口映射是别人做的,我也不清楚命令是什么,当时记下来好了。
4 楼 liuyuanli的微博 2014-10-10  
我试了一下Linux,用SSH成功了,你是用SSH吗?
3 楼 liuyuanli的微博 2014-10-09  
能介绍一下你在Linux上端口映射到方法吗,我想在Linux上也试一下,谢谢!
2 楼 leichenlei 2014-10-09  
liuyuanli的微博 写道
你在文中提到把127.0.0.1 5858 映射到其他端口成功实现了远程调试,能告诉我具体的方法吗?谢谢!

我是在Windows上,试了用下面的命令添加端口转发,但还是无法绑定到物理网卡的端口上进行调试。

netsh interface portproxy add v4tov4 listenport=5859 listenaddress=“物理网卡IP” connectport=5858 connectaddress=127.0.0.1


目的是在自己电脑上调试另一台linux上的nodejs。

我的电脑是win7, 远程机是linux。

这里的端口映射是在linux远程机上做端口映射,之后在win7上远程调试。
1 楼 liuyuanli的微博 2014-10-08  
你在文中提到把127.0.0.1 5858 映射到其他端口成功实现了远程调试,能告诉我具体的方法吗?谢谢!

我是在Windows上,试了用下面的命令添加端口转发,但还是无法绑定到物理网卡的端口上进行调试。

netsh interface portproxy add v4tov4 listenport=5859 listenaddress=“物理网卡IP” connectport=5858 connectaddress=127.0.0.1

相关推荐

Global site tag (gtag.js) - Google Analytics