前言

今天搞一篇VS相关的内容,为啥要用到远程部署调试,这个也是有缘由的。要不,闲着蛋疼用它作甚,本地调试它不香?

主要是上一篇文章说到的那个项目,U盘文件加密软件的项目。为了测试一些功能,得疯狂拔插它,看他正不正常,看它稳定不稳定。那拔插就拔插啊,关远程啥事。其实也没啥影响,就是,有点麻烦,测一次就得将双手从键盘上挪走,去拔插那已经被插到松动的扩展坞,有时还不会识别,气不气嗦。

所以,今天还真的用远程调试来比较舒服些,那我远程部署到哪里调试呢,那当然是部署到虚拟机里面呀。那缘何要放虚拟机里面,前面说了,因为我懒。。。

哈哈哈,主要是虚拟机有硬件连接的功能啦,就是VM右下角那个东西,它给我提供了懒的基础。

20210121202604

这显示倆,是因为我怼了俩U盘,一个接到主机一个接到虚拟机,点它就可以选择对应的U盘是否接入虚拟机

部署环境

接入测试用U盘

插到主机USB口之后,会让你选接入到的设备,我这里全部接到主机

20210121201858

部署远程调试软件到虚拟机中

扯犊子这么久,正文开始。

msvsmon.exe 所在的目录整个拖过去,这个工具只要是安装了VS的,都会有,例如我的 msvsmon.exe 路径为 E:\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64 ,因为我主机、虚拟机以及部署调试的软件均为64位,所以选择64位的程序

拖过去之后,右键管理员运行之,会让你授权管理员,以方便配置防火墙等服务,如果不以管理员运行,到时走到最后一步部署的时候,会有下图说需要管理员运行

20210121204536

20210121203308

哟西,授权后,启动起来了

20210121203407

打开选项,进行配置,选 无身份验证 然后,最长空闲时间设为0,因为我记得设为0是无限等待。

20210121203608

差不多了,虚拟机这边就这样了。

配置主机端的开发项目

来到项目配置,选择 调试 然后,切换到 远程 Windows 调试器

然后,设置好运行命令,工作目录,远程服务器的名字,环境,以及部署的目录,还有其他要部署的文件

20210121205146

在这里,记一下这几个点

  • 这个其它要部署的文件,可以自动将依赖复制过去,比如我这里写的 cryptopp.dll 这个,如果不自动复制过去的话,手动复制的话,有多蛋疼,懂得都懂

  • 远程服务器名称,可以用 whoami 看

20210121205711

  • 部署目录如果不写,会无法自动部署,如下,灰格子

20210121205846

配置完毕后,选择好要用的调试器

20210121210628

点击调试,启动,芜湖,起飞

20210121210726

往虚拟机一看,芜湖,坠机

20210121210806

好嘛,忘了将QT的dll弄过去了。

这里有点儿小坑,似乎是没法将本地机器的目录在配置里面直接拷到远程机器的,为了弄清能不能直接部署目录下的文件过去,特地查了一些官网说明 https://docs.microsoft.com/zh-cn/visualstudio/debugger/remote-debugging-cpp?view=vs-2019

20210121211118

所以,远程机器并未安装有QT的环境,所以,是不行的。那只能指定要复制哪些dll过去了,或者手动将需要的dll复制过去

那我又不知道缺失什么dll,一个一个点确定,再一个一个复制过去,那不显得很憨?

所以,就用QT的部署工具,将依赖dll全部给整出来,然后再全部复制到远程机器上

Windows键之后,找到QT的命令行,然后输入一下命令,当然你得换换路径啦

20210121211751

1
cd E:\Code\UdiskEncryptTools\UdiskEncryptTools\x64\Debug && windeployqt UdiskEncryptTools.exe

20210121211940

自动打包后,依赖的dll就全部都在这里了,来看看目录

20210121212033

没毛病,将这些文件全部都复制到远程机器上

再来远程调试一次

20210121212430

好家伙,还缺一个dll,ucrtbased.dll,这家伙在C:\Windows\System32 目录下,手动复制一下到虚拟机上

再来一次,肯定可以了

20210121213149

芜湖,起飞!

断点调试

在 处理插入U盘处下断,看看是否正常命中

20210121213327

20210121202534

这里要用到前面说的,将U盘从主机接到虚拟机

然后可以看到命中断点,以及调试信息什么的,都是正常的,岂一个美滋滋了得 ~

20210121213535

20210121213612

总结

折腾这么久(其实写文章花了不少时间),就为了节省拔插U盘的时间,顺便复习一波VS远程部署调试的小技能。哈哈哈,阔以了,快乐了,调试去~

20210121201216