Visual Studio 2008 远程调试

Visual Studio 2008 远程调试

作者: PowerCoder   来源: 博客园   发布时间:2010-02-17 21:20  阅读:1179 次   原文链接    [收藏]   

VS是支持远程调试的,这样在自己公司就可以远程调试在客户机上的程序了

VS的远程调试分为两种:

直接远程调试:这种调试方法必须在有VS项目文件下才可以使用(因为被调试机的地址要在项目文件中设置),具体内容请见:http://www.cnblogs.com/tengs2000/articles/1070760.html   里的方法一

附加进程调试:具体内容请见:http://www.cnblogs.com/tengs2000/articles/1070760.html   里的方法二

 

这里我只说几个要值得注意的地方

1、附加进程调试又分为两种:(1)Window身份验证远程调试 (2)匿名远程调试

  • Windows身份远程调试在调试主机上VS里的附加进程要用默认模式,这里请注意不要被远程模式的字面意思欺骗了,“远程(无身份验证时仅限本机)”这个模式实际上指的是匿名远程调试需要输入被调试的主机名和端口号
  • Windows身份验证远程调试必须要在调试机和被调试机上使用相同用户名和密码的Windows账户,这样做是为了验证调试机的身份。
  • 将远程调试作为被调试机的服务可以免除“Windows身份验证远程调试必须要在调试机和被调试机上使用相同用户名和密码的Windows账户 ”这个限制,因为在设置windows服务的时候会要求输入允许进行调试的机器的登录名和密码,只要调试者在他的系统上使用该用户名和密码就可以使用远程调试。
  • 直接远程调试只支持Visual Studio 远程调试器上的windows身份验证调试模式,不支持将远程调试作为被调试机的服务 和匿名远程调试
  • 使用匿名远程调试有个问题,附加进程上的 被调试机进程没有用户名,导致VS上设置的断点全不起作用,感觉匿名远程调试如同虚设.....至今没有找到解决办法........
  • 使 用匿名远程调试的时候如果在msvsmon上没有选择“允许任何用户进行调试”复选框,那么仍然有:“调试机和被调试机上使用相同用户名和密码的 Windows账户”这个限制,但是就算是在匿名远程调试下使用相同的用户名和密码你还是会发现附加进程里出现的被调试机进程还是没有用户名,这仍然说明 设置断点不起作用

2、设置

 

前提条件:

调试机和被调试机都在一个局域网内,且必须在一个网段
调试机和被调试机必须登录相同的用户,用户名必须一直
关闭防火墙或打开相应的端口,一般是4015
调试机和被调试机的本地安全策略中的网络访问必须改为“经典,本地用户以自己的身份验证”,路径为控制面板->用户管理->本地安全设置->本地策略->安全选项->网络访问

 

调试方法:
至此有2种调试方法:一种是匿名调试,无需验证,一种是Window身份验证调试:

 匿名调试:

1.被调试机的msvsmon下选择工具->选项,点击无身份验证模式(只限本机)

2.之后可以看到主机名和IP,一般是hostname:4015的形式
3.调试机打开VS,选择附加到进程

4.传输选择远程(无身份验证时仅限本机)

5.限定符选择hostname:4015,之后刷新就可以看到进程列表了


Window身份验证调试: 这种方法需要调试机和被调试机的用户名和密码完全一致

1.被调试机的msvsmon下选择工具->选项,点击windows身份验证

2.调试机打开VS,选择附加到进程

3.传输选择默认

4.限定符选择username@:hostname ,之后刷新就可以看到进程列表了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1) 远程端:安装VS2005光盘"\vs\Remote Debugger\x86\rdbgsetup.exe"。或者直接运行或copy本地端的: "Program Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\x86" (2) 远程端:“本地安全策略 - 安全选项 - 网络访问:本地帐户的共享和安全模式”改为:经典-本地用户以自己的身份验证。 (3) 远程端:启动Remote Debuger,从“工具 - 选项”中将身份验证模式改为“无身份验证,允许任何用户进行调试”。 或者直接用命令行:"\ msvsmon.exe" /noauth /anyuser /nosecuritywarn,可以建个快捷方式以方便运行。 (4) 将需要调试的程序debug版本和相应的pdb文件(包含调试信息)拷贝到远程主机,启动该debug版本程序。 (5) 本地:在VS2005中,“工具”--“附加到进程”,传输选“远程”,限定符输入远程端的主机名或IP地址,回车,选择我们需要调试的应用程序。如果一切正常,那么我们现在可以像调试本机程序一样调试远程主机上运行的debug版本了。 细节和常见问题: (1)如果是64位系统,请选择x64,即\vs\Remote Debugger\x64\rdbgsetup.exe; (2)不要因为远程主机是64位的,就使用64位的remote debugger,它必须和你的应用程序匹配,即统一为32位,或64位。 (3)如果是家庭版,控制面板管理工具里是没有“本地安装策略”这个工具的,那么只能通过修改注册表来实现,注册表项:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa], 找到“forceguest”,如果它的值为1,即dword:00000001,表示“仅来宾 - 对本地用户进行身份验证,其身份为来宾”(这个描述win7和之前的系统稍有不同),如果值为0,即dword:00000000,表示“经典 - 对本地用户进行身份验证,不改变其本来身份”。我们需要的值为0。 (4)win7/vista下远程连接到目标主机,已经成功显示了进程列表,但是attach待调试程序时候本地出现提示“Unable to attach the process - 系统找不到指定的文件 ”,这是因为remote debugger权限不足导致,以管理员权限重新启动remote debugger解决该问题。 (5)成功attach到远程主机目标程序,但是本地无法下断点,或者断点下了之后处于不可被触发状态。解决办法:rebuild整个工程,然后将重新编译的程序和pdb文件覆盖远程主机相应文件(这个和本地调试完全一样是不:P)。 (6)debug版本的程序拷到远程主机之后,无法运行,那好因为缺少相应的debug版本动态库和相关版本配置文件(可以用VS附带工具Depends查看)。以MFC程序为例,需要如下操作: 1)将VS目录下Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86下的三个目录相应的动态库拷贝到远程主机应用程序根目录下或者c:\windows\system32\目录下。 2)在c:\windows\winsxs\目录下找到编译主机vs2005版本匹配的目录:Microsoft.VC80.DebugCRT、Microsoft.VC80.DebugMFC,将他们拷贝到目标主机c:\windows\winsxs目录下。在将本地winsxs\Manifests\目录下的几个相应文件拷贝到目标主机这个目录下。最后将本机winsxs\Policies\目录下的相应子文件拷贝到相同目录下。这个链接说的更加的详细:http://wenwen.soso.com/z/q165079372.htm 注意:win7/vsita下winsxs是没有权限往里面写东西的,所以要更改权限,这个可以网上搜索,我就不详述了。 现在已经可以正常运行debug版本的程序了,即便该主机没有开发环境:)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值