Remote Debugging with Visual Studio 2005

Remote Debugging with Visual Studio 2005
Posted by: Eran, in Visual Studio
Sometimes you need to to debug something that is simply doesn’t work as it should. It doesn’t throw an error so it’s a bit trickers to debug it with WinDbg or MDbg. In addition to that, you simply cannot (or should not) install a full blown Visual Studio installation on that machine.
For these scenarios exactly, Visual Studio’s remote debugging abilities exist.
At work, a friend had to debug such a problem. It didn’t throw an error and it worked on his machine (it always works on the developer’s machine ) but didn’t work on one of our test servers.
In order for the remote debugger of Visual Studio to work, one must install the Remote Debugger package that comes on the Visual Studio DVD on the remote computer. It’s a relatively small footprint installations.
NOTE: Be sure NOT to install this on a production server since the remote debugger needs to somehow talk to your debugger and it uses the network for that. Installing this (or at least keeping it enabled) on a production server might put the server at risk of being hacked!
Installing is the easy part. Now comes the configuration part since the debugging service authenticates both ways (both the machine running Visual Studio needs to authenticates on the remote machine, and the remote machine needs to authenticate on the machine running Visual Studio)
I’ve found two interesting article that can help you do that. One is a Knowledge Base article from Microsoft, the other a blog post for figuring out how to configure things when you are running in a domain-less (or domain different) envrionment:
How to implement remote debugging in Visual Studio 2005
Remote Debugging without domain accounts - from greggm’s blog.
If you follow these two articles you’ll get it up and running in no time.
If all else fails, printf debugging will probably still work (I’m referring to the broader definition of printf debugging which includes logging to a file/event log/whatever and not actually using printf’s to log stuff).

本文转自
http://dotnetdebug.net/2007/02/12/remote-debugging-with-visual-studio-2005/
(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、付费专栏及课程。

余额充值