背景:
有时候遇到客户的机器上发现的问题,但本地无法复现,仅凭现象很难分析,此时就需要使用VS的远程调试,可以做到使用本地代码调试客户机的程序。
下面,以VS2010为例,介绍一下VS远程调试客户端程序的方法。
准备:
(1)保证本地代码和远程机器的软件版本对应的代码一致;
(2)若是release调试,需要设置调试环境(调试信息格式/优化/生成调试信息);
(3)关闭远程计算机的防火墙;
步骤:
(1)将Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger 拷贝到目标计算机中,位置随意;
(2)在目标电脑上以管理员身份运行msvsmon.exe,在【工具】->【选项】中设置为【无身份验证(仅限本机)】;
第二步,本地调试的准备:
有两种方式,均可。
方式一:通过本地代码直接启动远程电脑的exe调试
A:将本地pdb文件拷贝到目标电脑的exe同目录下(也可以是其他指定的符号路径);
B:将本地代码生成的的exe替换到远程机器中(替换前注意备份),调用的DLL还是目标计算机上的DLL;
C:设置本地开发环境的启动工程项的【配置属性】->【调试】,类似下图所示:
其中,远程命令是远程电脑exe的全路径,工作目录是exe所在目录,远程服务器名称为IP地址,可为局域网地址,也可为外网IP;
方式二:本地附加远程电脑的进程调试
A:在目标电脑上运行exe;
B:在本地VS中打开【调试】->【附加到进程】界面;
C:配置界面,类似下图:
其中,【传输】选择远程,【限定符】输入客户端电脑的IP地址,然后点击【刷新】按钮;
D:在刷新出来的进程列表中选择要附加的进程即可;
注意,附加到进程调试也需要将PDB文件拷到远程的机器中,若远程电脑的进程列表已经刷出,但附加时提示找不到,检查远程电脑的msvsmon.exe是否以管理员权限运行;