打算整理这篇文章是因为最近经常出现一些只在非开发机上才出现的问题。以前出现这种问题的时候处理的方式只能是拿着代码分析,大胆的猜,这样的处理方式自然就会带来很大的不确定性,而且这样每排除一个疑点都需要重新编出一个版本确认,效率自然会非常的低。
偶然的机会我了解到了VS用的远程调试,这其实已经是一项很成熟,很老但很实用的技术,只是之前一直没有去了解过。这一次的使用上,远程调试帮我很快的解决了刚刚提到的这些问题,很大的提升了解决问题的效率。
重述一下使用场景:
常用的主要是在部署的机器上程序出现问题, 而一般的部署机器上没有开发环境,此时需要准确的定位出错的原因时使用。进行远程调试时,开发机可以是任何支持 Visual Studio 的平台。远程计算机可以是 32 位或 64 位平台。
接下来描述使用步奏(我们暂称出问题的机器为目标机,调试的机器称开发机):
1.在目标机器上运行 msvsmon.exe.
目标机器一般没有这个程序, 我们需要将开发机vs安装目录下的 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger里的文件拷贝到目标机器,这里面包含了32位和64位的两种,可根据目标机环境选择运行。
\Remote Debugger\x86\msvsmon.exe是x86版本的调试器。
2.搭建好开发机调试环境
3. 附加到目标机器上待调试的进程,采用attach的方式调试:
tools->Attach to process弹出的选项框进行如下设置:
transport中选中Remote,Qualifier中填目标机器的 IP 地址,点击Refresh就可以看到目标机器上的进程,接下来只要选择你需要调试的进程开始调试就成了。
偶然的机会我了解到了VS用的远程调试,这其实已经是一项很成熟,很老但很实用的技术,只是之前一直没有去了解过。这一次的使用上,远程调试帮我很快的解决了刚刚提到的这些问题,很大的提升了解决问题的效率。
重述一下使用场景:
常用的主要是在部署的机器上程序出现问题, 而一般的部署机器上没有开发环境,此时需要准确的定位出错的原因时使用。进行远程调试时,开发机可以是任何支持 Visual Studio 的平台。远程计算机可以是 32 位或 64 位平台。
接下来描述使用步奏(我们暂称出问题的机器为目标机,调试的机器称开发机):
1.在目标机器上运行 msvsmon.exe.
目标机器一般没有这个程序, 我们需要将开发机vs安装目录下的 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger里的文件拷贝到目标机器,这里面包含了32位和64位的两种,可根据目标机环境选择运行。
\Remote Debugger\x86\msvsmon.exe是x86版本的调试器。
\Remote Debugger\x64\msvsmon.exe是x86- 64版本的调试器。
在运行 msvsmon.exe之前,我们需要把目标机器及开发机的防火墙都关闭。
msvsmon.exe 运行起来之后,在菜单栏中的选项设置中按如下的方式设置:
a) 身份验证模式选择无身份验证,并勾选其下面的允许任何用户进行调试,其余均采用默认方式。
2.搭建好开发机调试环境
开发机上需要设置目标机器上要调试程序的符号文件,设置方式步奏如下:
a) 打开 tools->options->debugging->symbols;
b) 在Symbol file locations中添加你的PDB文件路径并选中。
3. 附加到目标机器上待调试的进程,采用attach的方式调试:
tools->Attach to process弹出的选项框进行如下设置:
transport中选中Remote,Qualifier中填目标机器的 IP 地址,点击Refresh就可以看到目标机器上的进程,接下来只要选择你需要调试的进程开始调试就成了。