编程小白遇到本机A运行C.exe程序成功,放到别人的机子B上无法运行的问题,由于B主机上没有VS无法进行调试。
查找资料发现微软提供了一种Remote Debugging a Visual C++ Project in Visual Studio的方法。
网址为:https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging-cpp?view=vs-2017
下面详细介绍一下操作流程,仅供下次遇到时参考。
一、远程工具的获取和选择
有两种方式能够获取Remote Debugger。一种是从MSDN的文档中下载,另一种是从主机安装Visual Studio的目录中获取,我的目录为:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE
一定要选择与对方主机B的操作系统相匹配的远程工具,如x64、x86,和ARM等。把找到的Remote Debugger文件夹拷贝到对方主机B的任意位置。
二、远程工具的使用
- 以管理员权限打开Remote Debugger文件夹下的msvsmon.exe程序,如下图所示:
其中,红色方框标记处为主机名和TCP/IP端口号4022。
- 点击Tools-->Options,配置用户身份验证方式。远程工具支持两种方式:Windows Authentication(默认方式),和No Authentication。我采用第二种,一定要勾选Allow any user to debug,点击确认。
三、VS调试设置
在VS2017中,打开对方主机B运行的exe程序的应用程序源代码。注意,当前源代码的编译结果要与生成B主机运行的C.exe文件相同,不然存在调试不匹配问题。
- 点击Debug-->Attach to Process,进入到附加到进程页面。因为采用无身份验证,Connection Type选择Remote。在Connection Target中输入对方主机名和TCP/IP端口号,亦可用对方主机的IP地址代替主机名,点击Find,跳出远程连接界面,选择自动检测到的设备名,点击Select。
当连接成功之后,对方主机B的Remote Debugger会显示你已经连接,如下图所示:
- 在Attach to Process页面中勾选Show processes from all users,在所有进程中找到对方主机运行的C.exe程序,双击程序名或选中该进程,点击Attch附加到进程中。注意:若找不到,可点击Refresh刷新远程目标机器的当前进程列表,大前提是对方主机B运行该C.exe程序。
然后就能在本地主机A中对对方主机运行的C程序进行调试了,找到出错原因。