如何在本地代码同步到服务器调试远程服务器上的Node代码

在本地VS浏览导出Excel没问题,但是发布到服务器和本地IIS都不能导出,就想着看看到底是什么原因导致的,就捣鼓下本地VS远程调试发布到服务器上的程序(本地发布也行),先将然后配置记录下来,以供别人参考。
第一步:IIS配置
首先在服务器上或本地IIS添加一个新的网站,具体怎么操作就不在这里说。
第二步:服务器上远程调试配置
我的环境是win7+vs2013,配置的过程中,可能会有些不同,但个人觉得也就大同小异。
首先,在开始菜单里面Visual Studio 2013下面 找到Visual Studio Tools并点击:(WIN8系统已上请用搜索来找)
1:本地IIS调试器配置,打开后,根据自己的系统选择x86或者x64,然后双击打开
我这里的系统是X86的我就打开X86,找到msvsmon.exe,右击,以管理员身份运行。运行后如图:
选择工具,选项,选择无身份验证,并勾选运行任何用户进行调试,点击确定
本地调试器配置完成。
2:服务器IIS调试器配置
首先,在开始菜单里面Visual Studio 2013下面 找到Visual Studio Tools并点击:(WIN8系统已上请用搜索来找)
1:服务器调试器配置,打开后,根据自己的系统选择x86或者x64,然后双击打开,然后把相应版本复制到服务器上随便找个目录放着就行。
2:其他步骤参考本地IIS调试器配置其他步骤。
第三步& vs2013启动调试
在vs中,选择调试,附加到进程
在传输一栏,选择“远程(无身份验证)”,限定符一栏,输入你的本机ip或者主机名,然后点击右下角刷新,点击刷新之后,在可用进程一栏中,找到w3wp.exe进程,注意留意用户名一栏,看看时候是你要调试的网站的应用程序池,如果没有找到w3wp.exe,请选择更多用户进程,如果还没有请到到iis中,打开你的网站后,再点击刷新,即可找到。
找到此进程后,双击,弹出附近安全警告,选择附加即可。
到此就已经可以进行远程调试了。下面简单看下例子。
第四步& 在本机或者服务器用IE打开网址,点击事件就可以调试了。此处注意,pdb文件为各dll、可执行文件的debug代码位置符号信息。在这里我特别说明,把所需要的pdb文件放在一个文件夹里包含里来。如果直接是从bin文件靠过来的是不能调试的,特别注意。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:12778次
排名:千里之外
原创:30篇
(2)(8)(1)(1)(8)(2)(2)(3)(4)(2)(3)(2)11:23:07 UTC
调试环境一切正常,连得上 ,将构建后的代码布署在node上后打开,连接socket时出现这个提示:Uncaught ReferenceError: io is not defined
这是连接时使用的代码:if (cc.sys.isNative) {
window.io = SocketIO;} else {
require('socket.io');}var socket = io('http://127.0.0.1:3000');
请问有朋友遇过吗?
已自行解决,客户端必须这样写才行
if (cc.sys.isNative) {
window.io = SocketIO;} else {
window.io = require('socket.io');} var socket = window.io('http://127.0.0.1:3000')
希望对遇到的朋友有帮助。
07:41:14 UTC
cc.sys.isNative
require('socket.io'); 是标准的 nodejs 模块引用~~出来的是个对象,在模块内不会赋值到 window 里面的,所以直接去用 io.xxx 是会报错的 = =。。。
04:57:20 UTC
请教一个问题一个script里面if (cc.sys.isNative) {window.io = SocketIO;}else {window.io = require('socket.io');} 另一个script里面var socket = io('http://localhost:3000');
在本地浏览器可以实现访问,发布成web版本就不行了(报错,io没有定义),修改成var socket = window.io('http://localhost:3000');也是不行的(报错:window.io is not a function)
请教请教!!!
05:39:42 UTC
05:42:04 UTC
你肯定没看文档。。。 喏:/docs/creator/scripting/network.html
关键点是:导入socketio,设置为插件脚本。这样,io就是一个全局变量了。也就是window.io了。当然,还得在socketio.js上做hack,加一个是否是native的判断。具体原因,文档里有~
05:44:55 UTC
谢谢,马上看一下eclipse远程调试node.js - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
1.使用eclipse安装v8调试工具
2.eclipse-&Debug Configurations中new V8 VM的remote节点,设置name(debug_5858),host(…),port(5858)
3.编写如下代码(debug.js)供调试只用并且设置断点
&pre class=‘prettyprint’&var a = 1;
var b = ‘world’;
var c = function(x) {
console.log('hello ’ + x + a);
c(b);&/pre&
4.服务器端运行node --debug-brk=5858 debug.js以启动服务
5.eclipse中运行debug_5858(debug虫子那个按钮旁边的下拉箭头)
6.调试nodejs
还是webstorm …方便…
下载一个webstorm试下,谢谢推荐
要用Nodeclipse
调试问题解决了
用CLOUB9 吧
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的标签:至少1个,最多5个
谈到node断点调试,目前主要有三种方式,通过node内置调试工具、通过IDE(如vscode)、通过node-inspector,三者本质上差不多。本文着重点在于介绍 如何在本地通过node-inspector 调试远程服务器上的node代码。
在进入主题之前,首先会对三种调试方式进行入门讲解,方便新手理解后面的内容。至于老司机们,可以直接跳到主题去。
方式一:内置debug功能
进入调试模式(在第1行断点)
node debug app.js
进入调试模式(在第n行断点)
比如要在第3行断点。
方式一:通过debugger
方式二:通过sb(line)。
执行下一步
通过next命令。
跳到下一个断点
通过cont命令。
查看某个变量的值
输入repl命令后,再次输入变量名,就可以看到变量对应的值。如果想继续执行代码,可以按ctrl+c退出。
添加/删除watch
通过watch(expr)来添加监视对象。
通过watchers查看当前所有的监视对象。
通过unwatch(expr)来删除监视对象。
添加watch:
删除watch:
进入/跳出函数(step in、step out)
进入函数:通过step或者s。
跳出函数:通过out或者o。
示例代码如下,假设代码运行到logger(str);这一行,首先跳进函数内部,再跳出函数。
var nick = 'chyingp';
var country = 'China';
var str = nick + ' live in ' +
var logger = function(msg){
console.log(msg); // 这里
console.log('这行会跳过'); // 跳过这行
logger(str);
// 假设运行到这里,想要进入logger方法
console.log(str);
示例截图如下:
多个文件断点
通过setBreakpoint('script.js', 1), sb(...),在某个文件某一行添加断点。反正我是没成功过。。。怎么看都是bug。。。
每次都退出然后node debug app.js相当烦。直接用restart
比如远程机器ip是192.168.1.126,在远程机器上进入调试模式
[root@localhost ex]# node --debug-brk app.js
Debugger listening on port 5858
然后,在本地机器通过node debug 192.168.1.126:5858连接远程机器进行调试。
node debug 192.168.1.126:5858
/tmp node debug 192.168.1.126:5858
connecting to 192.168.1.126:5858 ... ok
break in /tmp/ex/app.js:1
& 1 var Logger = require('./logger');
('hello');
break in /tmp/ex/app.js:3
1 var Logger = require('./logger');
& ('hello');
当然,还可以通过pid进行远程调试,这里就不举例。
方式二:通过IDE(vscode)
首先,在vscode里打开项目
然后,添加调试配置。主要需要修改的是可执行文件的路径。
点击代码左侧添加断点。
顺利断点,左侧的变量、监视对象,右侧的调试工具栏,用过chrome dev tool的同学应该很熟悉,不赘述。
方式三:通过node-inspector
首先,安装node-inspector。
npm install -g node-inspector
方式一:通过node-debug启动调试
启动调试,它会自动帮你在浏览器里打开调试界面。
debugger git:(master) ? node-debug app.js
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
Debugging `app.js`
Debugger listening on port 5858
调试界面如下,简直不能更亲切。
方式二:更加灵活的方式
步骤1:通过node-inspector启动Node Inspector Server
debugger git:(master) ? node-inspector
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
步骤2:通过传统方式启动调试。加入--debug-brk,好让代码在第一行断住。
debugger git:(master) ? node --debug-brk app.js
Debugger listening on port 5858
步骤3:在浏览器里打开调试UI界面。就是步骤1里打印出来的地址 。成功
从上面的例子不难猜想到。(不负责任猜想)
通过node --debug-brk启动调试,监听5858端口。
node-inspector启动服务,监听8080端口。
在浏览器里访问http://127.0.0.1:8080/?port=5858。可以看到port=5858这个参数。结合之前讲到的node内置远程调试的功能,可以猜想,在返回UI调试界面的同时,服务内部通过5858端口开始了断点调试。
另外,从下面截图可以看出,UI调试工具(其实是个网页)跟 inspector服务 之间通过websocket进行通信。
用户在界面上操作时,比如设置断点,就向 inspector服务 发送一条消息,inspector服务 在内部通过v8调试器来实现代码的断点。
可以看到,用到了v8-debug,这个就待深挖了。
通过node-inspector调试远程代码
细心的同学可能会发现,node远程调试其实在上面node-inspector章节的讲解里已经覆盖到了。这里还是来个实际的例子。
假设我们的node代码app.js运行在阿里云的服务器上,服务器ip是xxx.xxx.xxx.xxx。
首先,服务器上启动node-inspector服务
[root@iZ94wb7tioqZ ~]# node-inspector
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
其次,通过--debug-brk参数,进入调试模式
[root@iZ94wb7tioqZ ex]# node --debug-brk app.js
Debugger listening on port 5858
最后,在本地通过ip地址愉快的访问调试界面。是不是很简单捏。
常见问题:安全限制
远程调试常见的问题就是请求被拒绝。这是服务器安全策略的限制。遇到这种情况,开放端口就完事了。
在我们的云主机上,默认安装了firewall-cmd,可以通过--add-port选项来开放8080端口的开放。如果本机没有安装firewall-cmd,也可以通过iptables来实现同样的功能。
[root@iZ94wb7tioqZ ex]# firewall-cmd --add-port=8080/tcp
然后,就可以愉快的远程调试了。
0 收藏&&|&&7
你可能感兴趣的文章
10 收藏,589
3 收藏,159
12 收藏,1.8k
本作品采用 署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
我要该,理由是:
扫扫下载 App

我要回帖

更多关于 远程调试代码 的文章

 

随机推荐