远程调试C#程序环境的配置
Contents
远程调试适用于需要在本机调试在其他 Windows 设备上运行的程序,典型的比如调试 Surface 上的程序。
目标 Windows 主机不具备安装 Visual Studio 开发环境条件的,也可以用远程调试来进行调试。
微软MSDN官方有文章讲解如何进行远程调试,链接:Remote Debugging。
下载安装远程调试工具
根据所使用的 Visual Studio 版本下载对应的远程调试工具,VS2015 版本的下载链接在此:Remote Tools for Visual Studio 2015。
远程调试工具根据架构分别有 x86,x64 和 ARM 版本,根据开发主机和调试目标设备的架构进行下载,注意下载版本需要与机器架构一致,即 x64 的机器必须安装 x64 版本的远程调试工具,不能使用 x86 版本的(在安装过程中会提示不支持)。
在开发主机上和调试目标设备上分别安装远程调试工具。
远程调试工具配置
远程调试需要开发主机和目标设备处于同一局域网、工作组或者家庭组。远程调试不能通过 Internet 连接。
1. 目标设备配置
首先,需要设置目标设备上的远程调试器。
运行目标设备上安装好的 Remote Debugger,首次运行会提示进行配置,按照默认配置就好,主要是添加防火墙例外,另外一点是是否将远程调试配置成服务,根据需要或者参照官方文章进行配置。
另外,我们需要在目标设备上添加一个账户,用于开发主机连接到目标主机上的 Remote Debugger。打开控制面板的用户帐户,新建一个普通账户,用户名为 debug
,同时设置一个密码。
点击 Remote Debugger 的菜单项 Tools/Options,默认选中了 “Windows Authentication”,点击右侧的 “Permissions…” 按钮,进入权限设置对话框。点击 “Add” 手动输入 debug
账户名,添加 debug
账户的调试权限。同时需要设置一下 “Maximum idle time” ,这个是指 Remote Debugger 运行时的最大空闲时间,如果超过这个时间,Debugger 就会自动关闭,建议设置较长时间,比如 3600
(1小时),否则可能需要频繁手动启动 Remote Debugger。
这样目标设备上的配置完成。
PS:
- 调试 .NET 程序只能使用 “Windows Authentication”,不支持 “No Authentication” 选项。
- 可能每次启动 Remote Debugger 都需要重新添加 “Permissions…” 账户。
2. 开发主机配置
然后,需要配置开发主机上的调试环境。
打开需要进行远程调试的工程,打开工程的 Properties
页面,选择 Debug
标签,勾选其中的 Use remote machine
选项,然后填写入目标设备的名称,这个名称可以打开目标设备的系统信息看到,VS 会自动在其后添加端口号。这里同样可以填写目标设备IP。此外确保 Working directiory
为空,下方 Enable native code debugging
未被选中。
这时候基本的远程调试就可以用了,但是我们需要在项目编译后将文件手动复制到远程主机上才能调试,这样很不方便(每次重新编译都需要重新复制)。官方文章中也没有提到如何实现自动部署。
我们可以使用 Windows 文件共享来解决这个问题。
-
启用开发主机上的 Guest 账户。进入控制面板/用户帐户,启用 Guest 账户,同时,进入 控制面板/系统和安全/管理工具/本地安全策略,从左侧打开 本地策略/用户权限分配,右侧找到拒绝从网络访问这台计算机,打开,然后删除掉 Guest 账户并保存。这样目标设备就可以通过局域网共享访问这台计算机的文件了。
-
在开发主机上新建一个
Shared
目录,右键设置共享,添加Guest
账户为读取权限。 -
修改工程
Properties
页面,选择Build
标签,修改下面Output
的Output path
路径为共享目录路径,注意这里的应该为\\XXX\Shared\project_name\bin\Debug\
,XXX
部分是开发主机的名称。这里不能直接使用本机的目录路径,否则目标设备无法访问。
启动项目调试,VS 会自动搜索目标设备名,如果找到则会提示输入认证用的用户名和密码,这里输入 debug
和 用户密码即可。
这样就可以开始程序调试了。