项目开发中总会碰见现场软件有问题,需要调试。但有时候现场服务器不允许安装VS工具,或是不方便把源代码放到现场的服务器上,或是需要使用现场的某些设备,导致无法使用现场的环境进行远程调试,公司环境又无法完全模拟现场环境。故想开发一款远程调试代理软件,能通过某台外网服务器做中转,实现远程调试。
图1 常规远程调试模式
图2 目标远程调试模式
图3 msvsmon.exe软件界面图(VS远程调试工具)
目前流行的方式是通过UDP穿透代理的方式进行调试,原理图如下
1、客户端A使用UDP方式连接代理服务器,在本地路由器上挖个UDP洞,代理服务器也知道这个洞的位置(此洞的外网IP地址和UDP端口)
2、客户端B使用UDP方式连接代理服务器,在本地路由器上挖个UDP洞,代理服务器也知道这个洞的位置(此洞的外网IP地址和UDP端口)
3、客户端A和客户端B从代理服务器获取对方的UPD洞
4、客户端A和客户端B通过UDP洞通信
此种方式的弊端是某些路由器挖的UDP洞只认代理服务器发的数据包,不认对方客户端发的数据包,因为此UDP洞是连接代理服务器时挖的洞。另外一个弊端是UDP是无连接的,稳定性不如TCP。
因为手上只有一台阿里云的linux外网服务器,所以打算代理服务器为linux系统,客户端操作系统为windows系统,开发工具VS2015(Visual GDB插件),使用第三方库boost,开源地址:https://gitee.com/comhaqs/proxydebug.git
未完成