Visual Studio 远程调试软件
前言
今天搞一篇VS相关的内容,为啥要用到远程部署调试,这个也是有缘由的。要不,闲着蛋疼用它作甚,本地调试它不香?
主要是上一篇文章说到的那个项目,U盘文件加密软件的项目。为了测试一些功能,得疯狂拔插它,看他正不正常,看它稳定不稳定。那拔插就拔插啊,关远程啥事。其实也没啥影响,就是,有点麻烦,测一次就得将双手从键盘上挪走,去拔插那已经被插到松动的扩展坞,有时还不会识别,气不气嗦。
所以,今天还真的用远程调试来比较舒服些,那我远程部署到哪里调试呢,那当然是部署到虚拟机里面呀。那缘何要放虚拟机里面,前面说了,因为我懒。。。
哈哈哈,主要是虚拟机有硬件连接的功能啦,就是VM右下角那个东西,它给我提供了懒的基础。
这显示倆,是因为我怼了俩U盘,一个接到主机一个接到虚拟机,点它就可以选择对应的U盘是否接入虚拟机
部署环境
接入测试用U盘
插到主机USB口之后,会让你选接入到的设备,我这里全部接到主机
部署远程调试软件到虚拟机中
扯犊子这么久,正文开始。
将 msvsmon.exe 所在的目录整个拖过去,这个工具只要是安装了VS的,都会有,例如我的 msvsmon.exe 路径为 E:\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64 ,因为我主机、虚拟机以及部署调试的软件均为64位,所以选择64位的程序
拖过去之后,右键管理员运行之,会让你授权管理员,以方便配置防火墙等服务,如果不以管理员运行,到时走到最后一步部署的时候,会有下图说需要管理员运行
哟西,授权后,启动起来了
打开选项,进行配置,选 无身份验证 然后,最长空闲时间设为0,因为我记得设为0是无限等待。
差不多了,虚拟机这边就这样了。
配置主机端的开发项目
来到项目配置,选择 调试 然后,切换到 远程 Windows 调试器
然后,设置好运行命令,工作目录,远程服务器的名字,环境,以及部署的目录,还有其他要部署的文件
在这里,记一下这几个点
这个其它要部署的文件,可以自动将依赖复制过去,比如我这里写的 cryptopp.dll 这个,如果不自动复制过去的话,手动复制的话,有多蛋疼,懂得都懂
远程服务器名称,可以用 whoami 看
- 部署目录如果不写,会无法自动部署,如下,灰格子
配置完毕后,选择好要用的调试器
点击调试,启动,芜湖,起飞
往虚拟机一看,芜湖,坠机
好嘛,忘了将QT的dll弄过去了。
这里有点儿小坑,似乎是没法将本地机器的目录在配置里面直接拷到远程机器的,为了弄清能不能直接部署目录下的文件过去,特地查了一些官网说明 https://docs.microsoft.com/zh-cn/visualstudio/debugger/remote-debugging-cpp?view=vs-2019
所以,远程机器并未安装有QT的环境,所以,是不行的。那只能指定要复制哪些dll过去了,或者手动将需要的dll复制过去
那我又不知道缺失什么dll,一个一个点确定,再一个一个复制过去,那不显得很憨?
所以,就用QT的部署工具,将依赖dll全部给整出来,然后再全部复制到远程机器上
Windows键之后,找到QT的命令行,然后输入一下命令,当然你得换换路径啦
1 | cd E:\Code\UdiskEncryptTools\UdiskEncryptTools\x64\Debug && windeployqt UdiskEncryptTools.exe |
自动打包后,依赖的dll就全部都在这里了,来看看目录
没毛病,将这些文件全部都复制到远程机器上
再来远程调试一次
好家伙,还缺一个dll,ucrtbased.dll,这家伙在C:\Windows\System32 目录下,手动复制一下到虚拟机上
再来一次,肯定可以了
芜湖,起飞!
断点调试
在 处理插入U盘处下断,看看是否正常命中
这里要用到前面说的,将U盘从主机接到虚拟机
然后可以看到命中断点,以及调试信息什么的,都是正常的,岂一个美滋滋了得 ~
总结
折腾这么久(其实写文章花了不少时间),就为了节省拔插U盘的时间,顺便复习一波VS远程部署调试的小技能。哈哈哈,阔以了,快乐了,调试去~