nodejs远程调试

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

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

命令行模式:

     node --debug xxx.js

    node --debug=0000 xxx.js

eclipse模式:

nodejs远程调试_第1张图片
   

这是开启调试端口,不指定,默认端口是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远程调试_第2张图片
 

解决办法
第一种是远程机编译之前修改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  

 

 

 

你可能感兴趣的:(nodejs)