vs远程调试的方式有两种,远程启动方式和附加进程方式。
一般来说,咱们使用vs调试代码时,直接附加进程即可,但某些时候附加进程方式无法命中断点。比如我们想调试的C++代码,但是调试的入口程序是C#程序,如C#程序调用了C++封装的dll,如果想调试dll的代码,但附加进程我们只能附加这个C#程序,但附加进程方式却无法命中断点,只能通过启动的方式调试。
vs远程调试我们需要借助Visual Studio 2015 远程调试器(Visual Studio 2015 Remote Debugger)
我们需要先介绍下Visual Studio 2015 远程调试器
一、关于Visual Studio 2015 Remote Debugger
作用是用来通过VS远程调试其他机器的程序,我们可以调试部署在不同机器上的应用程序,如MFC、C#等程序。
二、Visual Studio 2015 Remote Debugger 的获取
获取方式有两种:
1、在我们调试的机器上,使用搜索工具everything搜索名字msvsmon.exe。
2、获取方式是下载Remote Debugger(需同操作系统的版本一致),这个就自己百度了。
三、Visual Studio 2015 Remote Debugger的配置
Remote Debugger支持远程用户身份验证方式有两种:Windows身份验证(默认方式),和无身份验证。
在Remote Debugger文件下找到msvsmon.exe,使用管理员身份运行。点击工具-选项,查看配置。
使用Windows身份验证,确认Permissions(权限)如下:
使用无身份验证方式,确保勾选任意用户:
四、远程调试方式
1、附加进程方式
在VS2015中,打开同远程目标机器一致的应用程序源代码,选择:Debug(调试)>Attach to Progress(附加到进程)界面,
若远程目标机器的Remote Debugger选择Windows身份验证,Transport选择Default,然后Find目标机器,Attach to选择AutoMatic,而后刷新远程目标机器的当前进程列表,原则运行应用程序。如下图所示:
远程机器Remote Debugger连接成功后,如下图所示:
若远程目标机器的Remote Debugger选择无身份验证,如下图所示:
然后直接点击查找,同网段可以直接搜索
备注:通过我测试,暂得出结论是:该功能只能超找到同网段的局域网的,如果是其他网段,必须使用ip+端口方式
然后选择连接调试目标
远程机器Remote Debugger连接成功后,同样会显示:xxx已连接的标志。
接下来,开发人员就可以进行远程调试了。
2、远程启动方式
远程调试Remote Debugger参考前面,不再赘述。
这里主要阐述下vs上如何启动远程机器上的程序。
首先、在项目上右键,然后设置为启动项
其次,在项目上右键—属性—可配置属性—调试—选择要启动的调试器为:远程windows调试器
然后,设置好远程命令、工作目录、远程服务器名称、连接
远程命令:要在远程系统上启动的程序路径
工作目录:要在远程系统上启动的程序路径目录
远程服务器名称:远程ip+启动端口,也可以直接是启动的名字
连接:根据远程系统上的远程调试器设置方式选择对应的连接方式。
最后,设置好后,直接F5启动即可将远程机器上的对应程序启动起来。
五、注意问题
Remote Debugger的版本需要跟调试的vs版本必须一致。