背景:

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

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. POJ1159——Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 53647   Accepted: 18522 Desc ...

  2. 【Cesium】坐标理解(转)

    https://blog.csdn.net/qq_34149805/article/details/78393540 1. 经纬度转换为世界坐标 第一种方式:直接转换: Cesium.Cartesia ...

  3. redis资料

    http://snowolf.iteye.com/blog/1630697  征服redis配置 http://redis.readthedocs.org/en/latest/  redis命令参考 ...

  4. Splash runjs() 方法

    runjs() 方法可以执行 JavaScript 代码,它与 evaljs() 功能类似,但是更偏向于执行某些动作或声明某些方法 function main(splash, args) splash ...

  5. Ubuntu图形界面和字符界面转换、指定默认启动界面

    1.按ALT+CTRL+F1.F2.F3.F4.F5.F6.F7可来回切换7个界面(Linux实体机)      其中ALT+CTRL+F7可切换到图形界面(Linux实体机)        如果是V ...

  6. 安装ubuntu后,你的屏幕尺寸太小,无法设置,该怎么解决

    安装完虚拟机之后,你的Ubuntu可能会在尺寸很小,(这种情况可能有,可能没有) 想要点击设置,选中Display里的分辨率下拉框,但是却因为这个窗口太大,无法点击apply按钮.悲剧啦!!! Ctr ...

  7. STL——关联式容器

    一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...

  8. mysql5.6.34-debug Source distribution在树莓派下编译的几个错误

    raspberrypi下编译mysql5.6 debug版源码. 1. 启动错误 和mysqld相关的文件及文件夹权限必须设置为mysql用户可读可写可执行,特别是/var/run/mysqld/目录 ...

  9. 清理和关闭多余的Windows 7系统服务

    清理和关闭多余的Windows 7系统服务 现在已经有不少配置不是很高的电脑用户正式用上了Windows 7(以下简称Win 7),如何让低配置电脑可以更流畅的运行Win 7呢?虽然部分软件提供了傻瓜 ...

  10. Android开发训练之第五章第五节——Resolving Cloud Save Conflicts

    Resolving Cloud Save Conflicts IN THIS DOCUMENT Get Notified of Conflicts Handle the Simple Cases De ...