转: vs2008 remote debugging (远程调式)

来源:互联网 发布:linux是什么语言写的 编辑:程序博客网 时间:2024/05/06 05:41

original url from : http://tudian2007.blog.163.com/blog/static/31566413201281710183281/


vs2008 remote debugging (远程调式)  

2012-09-17 22:47:52|  分类:|  标签:remote  debugging  |字号 订阅

虽然以前用过远程调式,但是调式效果不大好,比较卡,最近实在厌烦打印日志这种麻烦的调式方法,也不愿意在测试机上装vs2008,所以又想到了vs 2008 remote debugging;(这次证明其实是不是很卡,当时可能是网络不是很好或其他原因)

这次远程调式遇到很大问题,调式方法分为两种(1)Window身份验证远程调试 (2)匿名远程调试
先来讲讲匿名远程调式吧,需要操作如下:
(1)copy vs2008 安装目录下D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\x86\Remote debugging 文件夹到被调式端,然后打开msvsmon.exe如图1,


 
(2)tools->Options 打开之后选择no authentication(native only) 端口号为4015(请关闭被调式机的防火墙或在防火墙打开4015端口)并选择 allow any user to debug (如果没有勾选的话,那么仍然有“调试机和被调试机上使用相同用户名和密码的Windows账户”这个限制),maximum idle  time(seconds) 默认900


(3)vs2008->tools->attach to process 按如下设置,点击需要attach的进程即可调式



匿名调式问题:之所以后来一直没用匿名调式是因为,断点无法设置成功,老是失败,重新编译copy pdb文件还是失败,发现网上搜到的答案基本都是失败,说成功的几个实验了下还是失败,搜到个原因比较靠谱点(
  • 使用匿名远程调试有个问题,附加进程上的被调试机进程没有用户名,导致VS上设置的断点全不起作用,感觉匿名远程调试如同虚设.....至今没有找到解决办法........
  • 使用匿名远程调试的时候如果在msvsmon上没有选择“允许任何用户进行调试”复选框,那么仍然有:“调试机和被调试机上使用相同用户名和密码的Windows账户”这个限制,但是就算是在匿名远程调试下使用相同的用户名和密码你还是会发现附加进程里出现的被调试机进程还是没有用户名,这仍然说明设置断点不起作用


2.Window身份验证远程调试
这个实验成功,并能上断点;
前提条件如下:
调试机和被调试机都在一个局域网内,且必须在一个网段(同一个局域网,不同网段也会失败的,亲试过)
调试机和被调试机必须登录相同的用户,用户名必须一致
关闭防火墙或打开相应的端口,一般是4015
调试机和被调试机的本地安全策略中的网络访问必须改为“经典,本地用户以自己的身份验证”,路径为控制面板->用户管理->本地安全设置->本地策略->安全选项->网络访问
copy remote debugging 文件到被调式机

步骤如下:
(1)
tools->Options 打开之后选择windows authentication ,都是默认设置;并记下 server name 如下的Administrator@INFOCORE-5862E7


 
(2)
点击[开始] 按钮 ->[管理工具] ->[服务]
    找到 “Visual Studio 2008 Remote Debugger” 服务,
    在 “登录”选项页中把 “登录身份”中选 “此帐户”

    并点击后面的 “浏览”
选中新创建的用户,输入密码后确定,
    在 “常规” 选项页中点击 “启动” 按钮,启动 Visual Studio 2008 Remote Debugger 服务。

 

(3)
 在目标机上给新创建的用户添加 “作为服务登录” 权限。
    点击[开始]按钮 ->[管理工具] ->
           [域安全策略]
 ->[安全设置]->[本地策略]->[用户权限分配],
    将创建的用户(一般都是用administator)添加到 “作为服务登录” 项的用户列表中,
    退出后打开命令行执行 “gpupdate /force” 确保组策略被刷新

 
(4)调式机打开vs2008 ->tools->attach to process,如下设置,将(1)中得到的server name 设置在qualifier中,transport 选择default,如下图,refresh就能看到被调式机进程了;



在上述配置的过程,有时候还遇到 无法连接到remote ,请检查网络之类的问题,这类问题如果是虚拟机的话可能是网络设置问题或者虚拟机计算机名重名问题,需要注意;

注:由于vs 2008 远程只能在同一个网段的局域网内,并且大部分情况还是需要改用户名和密码,比较麻烦,下次有空写一篇关于windbg调式用户层进程的文章,相对vs 2008 各有优缺点吧;
参考的博客:http://www.cnblogs.com/OpenCoder/archive/2010/02/17/1668983.html
原创粉丝点击