准备工作
下载muduo源码
muduo的github地址:https://github.com/chenshuo/muduo
进入release页面下载2.0.0版本的zip文件,然后解压
配置linux环境
- 准备自己的linux虚拟机,我自己用的是Ubuntu18.04和VirtualBox
- 安装 ssh服务、gcc、cmake、gdbserver 和boost库
boost库是必须的,不过还有些其他的库供你编译更多的example
sudo apt install openssh-server build-essential cmake gdbserver libboost-dev
- 启用ssh服务要设置当前Ubuntu主机的端口转发,因为Windows无法通过VirtualBox默认的网卡配置来访问Ubuntu主机
当然你也可以设计桥接网卡来解决这个问题
随意选择windows机器上的一个未使用端口,我选了8888,虚拟机上的端口是22,默认的ssh服务端口
VS打开工程
通过cmake文件的方式打开工程
选择cmake这个选项,打开muduo文件夹的cmakelist
打开后VS会自动利用cmake收集信息,报了两个错
提示我们没有找到boost库,因为现在的默认配置的生成目标是windows系统,
在工具栏上找到x64-Debug
然后将它更改成linux-Debug
应该会跳出来一个配置远程连接的窗口
主机名选择127.0.0.1,端口选择8888,即我们在端口转发设置的windows端口(如果你没有设置端口转发的话,直接使用22端口即可),然后输入你的linux虚拟机的账号和密码(root用户需要另外配置sshd_config),最后连接,不出意外的话窗口会关闭
VS重新利用Ubuntu虚拟机上的cmake来分析项目,不过这时候我出现了一个错误
提示我们cmake不存在,明明安装好了怎么会不存在?在虚拟机上找了一会才发现我的cmake安装路径是/usr/bin/cmake
所以要更改cmakesettings.json文件的cmakeExcutable的值,改成我们自己的cmake路径
然后再进行cmake的缓存生成
开始调试
找到小绿三角选择要调试的example
我选择的是simple_echo
然后点击调试—>启动(F5)
这样程序就停留在我设置的断点上了,就可以开始简单的调试了
gdb窗口的第一行是一个报错,但是貌似不影响调试信息的输出
然后单步走进loop循环,在ubuntu上使用netstat命令查看套接字信息
netstat -a | grep 2007
看到服务器正在监听
用nc命令模拟TCP请求,然后输入123 456
在VS里面单步执行就能看到回显的123 456
好,这些就是我自己摸索的全部步骤了。
不过这是利用VS2017的跨平台cmake项目,并不是解决方案类型的跨平台项目,我也不知道差距在哪里