背景:

很多情况下本地开发没有问题,可放到服务器就有问题(更气人的是测试环境时也行可就是生产环境不行!)

1、想到可能是服务器环境不对,Web服务器版本不对

2、有文件读写是不是文件夹权限

3、Web服务器没有配置对

4、防火墙。。。。。总之是各种可能性的想篇了,也尝试了,最后只好打日志!

以前也知道有远程调试但没用过,觉得不靠谱,于是也没有尝试过!正好明日碰到了一个问题,想到打日志好难哦,还要分析!于是就开始尝试远程调试:

开发环境:win7+vs2012

生产环境:win server2003

按照第一篇说的:

===========================================复制Begin==========================================

不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误。

一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一个vs、跟一下代码吗?

其实不用的,vs有一个远程调试的功能。

这个功能是这样的,程序在其他的电脑上运行,但是我们可以在本地电脑上进行断点跟踪。

下面以vs2012为例,为大家介绍一下无身份验证的远程调试(如果要用有身份验证,又没有域环境,参见最后的总结),同时也说一下vs2012与以前版本在远程调试功能方面的改进。

1、从开始菜单中打开“Remote Debugger”文件夹,打开之后,你会看到两个文件夹,这个是要复制到远程计算机上的,只需要根据具体环境从两个里选出一个复制过去就好了。

2、复制完之后,在远程电脑上打开vs远程调试监视器(“msvsmon.exe”),会出现下图中的窗口,点击选项菜单,选中无身份验证和允许任何用户进行调试。

然后点击确定,这样,远程计算机就设置好了。当然,别忘了在远程计算机上启动你要调试的程序。

3、然后,我们在自己的电脑上,打开项目,从调试菜单打开附加到进程窗口,选择远程,输入远程计算机的ip,然后回车;

再选择要调试的程序,点击附加按钮。好了,点个断点,试试吧。

4、vs2012与之前版本的不同。

看看这张图,是不是很熟悉,不就是在远程计算机上的设置窗口嘛。呵呵,再仔细看看,这个张图和前面那张是不一样的。看到“仅限本机”几个字了吧。

这张图是从vs2010的远程调试监视器中截下来的,这个仅限本机是什么意思呢?经过几次试验,我得出一个结论,这个“本机”的意思,应该是“本地代码”,

和“托管代码”是想对应的。如果用vs2012之前的版本,也按照前三节所说的方法设置,是没有办法“断点”的,因为我们要调试的代码是“托管代码”。

那么,此时应该怎么设置呢?我们只能选择“Windows 身份验证”那个单选框了。附加的时候,也不能再选择远程了,只能选择“默认”。

 总结一下,如果用vs2012之前的版本进行远程调试需要注意的几点:

a、不能选择无身份验证

b、如果不是域环境,远程计算机和本地计算机必须同时使用相同的帐号密码

c、远程计算机上的程序文件要相应包含“.pdb”文件

===========================================复制End==========================================

结果就报错:"msvsmon.exe 不是有效的win32程序"

网站找到处理办法:

===========================================复制Begin==========================================

msvsmon.exe 可能使用了最新平台工具集编译,从而不支持之前的的 OS,你看上面的连接,可能会有补丁包。

http://connect.microsoft.com/VisualStudio/feedback/details/759435/vs2012-msvsmon-exe-doesnt-run-on-windows-xp

可以用 depends 看一下 msvsmon.exe 的依赖的 CRT 是什么版本。

===========================================复制End==========================================

找到了一个

https://support.microsoft.com这个网址上搜“msvsmon.exe 2003”

找到了Microsoft Visual Studio 2010 Remote Debugger 的下载址如果:

https://www.microsoft.com/zh-cn/download/details.aspx?id=475

安装天win server 2003上果然能用

===========================================复制Begin==========================================

假设现在有A、B两台PC机。
VS2010安装在A机器上,也就是说A机器是开发使用的机器。
B机器是程序运行部署使用的机器,其IP为:192.168.1.129(局域网IP)
说明:如果B机器是外网IP下面方法照样适合,不过在使用的适合可能会出现无法附加到进程的错误。
如果出现无法附加到进程的错误、无法连接到设备.请按照步骤13进行设置。
 
1、根据vs2010安装目录倒找Remote Debugger文件夹。如下图:
 

 
 
2、拷贝C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger目录到B机器上
3、运行B机器中Remote Debugger\x86下的msvsmon.exe文件如下图:(注意以管理员的程序运行msvsmon.exe)

4、在上图中选择Tools中的Options菜单项,如下图:

 
5、在弹出的对话框中按照下列方式进行设置,如下图:

 
6、设置完成后点击OK按钮 

到此需要调试的机器B已经设置完毕。
 
 
 
下面给出一个例子来演示如何在A机器上调试B机器中运行的程序。
 
7、在B机器上运行test.exe如下图:

 

 
 
8、在A机器上打开test.exe对应的源码(注意源码必须与test.exe保持一致,本文只给出调试方法,例子中代码无任何逻辑),如下图:

 
9、在8中选择Debug菜单中的Attach to Process子菜单项,如下图:

 

弹出如下对话框:

 
10、在Transport中选择:Remote(Native only with no authentication)选项,并在Qualifier中输入:192.168.1.129.如下图:

 
11、在10的基础上点击Refresh按钮,就可以看到B机器上的进程列表了。在进程列表中找到我们需要调试的的进程test.exe并选中

12、选择需要调试的进程后,单击Attach,就可以调试B机器上的程序。

 
13、无法附加到进程解决方案:
(1)从“开始”菜单中,选择“控制面板”。
(2)在“控制面板”中双击“管理工具”。
(3)在“管理工具”窗口中双击“本地安全策略”。
(4)在“本地安全策略”窗口中,选择“本地策略”。
(5)在“策略”列中,双击“网络访问: 本地帐户的共享和安全模型”。
(6)在“网络访问: 本地帐户的共享和安全模型”对话框中,将本地安全设置更改为“传统型”并单击“确定”。
(7)开启服务TerminalService
===========================================复制End==========================================
按照操作附加怎么也找不到!于是在点了帮助:我也就放弃了在2003上调试了:
 

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

专业版、高级专业版和旗舰版

更何况我是用 vs2012调试 2010可能也不行!就算行了web调试不了,没多太意义啊

于是把环境放到了win server 2008 按第一篇复制的操作,果然可以了!于是突然觉得2003你也有点老了啊!

Visual Studio 2010
 
其他版本
 

本主题适用于:

 

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

专业版、高级专业版和旗舰版

VS远程调试亲历的更多相关文章

  1. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

  2. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  3. Visual Studio 2012远程调试中遇到的问题

    有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...

  4. 使用Eclipse进行远程调试

    转自:http://blog.csdn.net/sunyujia/article/details/2614614 今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言 ...

  5. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  6. tomcat 远程调试

    1.服务端查看cataline.sh 中的描述  cataline jpda start 开启服务端远程调试 远程调试端口JPDA_ADDRESS="8000" 2.本地代码参考  ...

  7. 在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure

    [题外话] 上次介绍了VS上开发Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的开发和调试功能,当然很多情况下由于平台限制等原因需要在 ...

  8. [教学] Delphi Berlin 10.1 开发 Windows 10 平板 App 远程调试

    Delphi Berlin 10.1 开发 Windows 10 平板 App 远程调试安装步骤: 准备电脑: 一台开发电脑,安装 Delphi 开发环境 一台平板电脑,安装 PAServer,安装方 ...

  9. Xdebug文档(七) 远程调试

    Xdebug提示调试客户端接口与PHP运行相联系.该章节解释如何设置PHP与xdebug,并推荐一些客户端. 介绍 Xdebug的远程调试器允许你检查数据结构,交互式地穿过和调试你的代码.该协议已经开 ...

随机推荐

  1. 2018-10-29 A股主要指数的市盈率(PE)估值高度

    全指材料(SH000987) - 2018-10-29日,当前值:11.9289,平均值:30.66,中位数:26.1407,当前 接近历史新低.全指材料(SH000987)的历史市盈率PE详情 全指 ...

  2. [SLAM] 02. Some basic algorithms of 3D reconstruction

    链接:http://www.zhihu.com/question/29885222/answer/100043031 三维重建 3D reconstruction的一个算法思路介绍,帮助理解 首先一切 ...

  3. Java把数字格式化为货币字符串

    数字可以标志货币.百分比.积分和电话号码等,就货币而言,在不同的国家会以不同的格式来定义,本实例将接收用户输入的数字,然后在控制台中输出其货币格式,其中使用了不同国家的货币格式. 思路如下:使用Num ...

  4. mysql存储引擎ARCHIVE

    mysql常用引擎MyISAM和InnoDB,前者插入快 查询快,后者修改快 支持事务,各有优缺点,在网上突然看到一个引擎叫ARCHIVE,还蛮特别的 这个引擎只允许插入和查询,不允许修改和删除.相当 ...

  5. error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”

    _MSC_VER 定义编译器的版本.下面是一些编译器版本的_MSC_VER值:MS VC++ 10.0 _MSC_VER = 1600MS VC++ 9.0 _MSC_VER = 1500MS VC+ ...

  6. python3存入redis是bytes

    在python3 中使用redis存储数据,存进去的是bytes >>> import redis >>> import time >>> imp ...

  7. XML转JSON工具类

    原文地址:http://blog.csdn.net/lovesummerforever/article/details/26396465 1.pom依赖 <dependency> < ...

  8. [Command] alias - 别名

    alias 命令可以让用户使用预置的字符串来执行系统命令. 命令是指用户输入指令指示电脑完成工作.命令一般在命令行输入,以回车键完成输入.命令被传递给shell.shell是类Unix操作系统提供的纯 ...

  9. CDN的那些细枝末节

    起源: 原本打算系统看看关于axios的介绍,无意中就看见一句"Using cdn",于是百度一下,"cdn"是什么? 名词解释:CDN CDN的全称是Cont ...

  10. MVC项目的简单总结

    不能说是庆幸吧,正赶上公司要开发一个小小的MVC项目,于是这样任务就只有我自己承担,在这个项目中我才彻底感觉到自己之前有关MVC知识的无知,以为接触了皮毛就感觉能做项目,只要有心动脑思考就能完成一个完 ...