后端的很多程序都是运行在linux上面,因此对于许多用C++编写的后端程序其编译和运行基本都是在linux平台上面的,而对于编写程序来说直接在linux不是很方便,通常都需要借助ide在windows平台上来进行编写和调试。对于在windows上编写和调试程序,而在linux上面编译和运行,在visual studio通常可将项目构造成cmake项目,然后通过配置远程linux平台可实现远程调试。
远程调试可参考:https://blog.csdn.net/King_weng/article/details/103356602
但是对于一些使用了makefile的工程来说,使用visual studio来远程调试相对来说比较麻烦,visual studio目前还没有直接对makefile工程的远程调试。下面我将以visual studio 2017为例来管理makefile工程并实现远程调试。
1、linux平台环境配置
linux平台中通常使用gdb来调试C++代码,因此需要在linux中先安装gdb。
检查gdb是否安装:
gdb –version
2、linux和windows文件共享
在windows上编写和调试程序,而在linux上面编译和运行之前需要实现linux和windows的文件共享。linux和windows文件共享常用的方法通常是使用Samba来实现。
Samba的安装与配置:
https://blog.csdn.net/King_weng/article/details/110656606
查看Samba是否运行:
service smbd status
3、使用vclinux生成vs工程文件
vclinux是微软官方提供的shell脚本,可根据makefile生成vs的工程文件。
下载地址:https://github.com/robotdad/vclinux
下载完成后放到linux上进行解压,找到bash目录中的两个脚本文件,并执行这两个脚本,命令格式如下:
./genvcxproj.sh 工程目录 xxx.vcxproj
./genfilters.sh 工程目录 xxx.vcxproj.filters
注:工程目录通常为项目中放置makefile文件所在的目录。
4、visual studio中的配置
通过第3步中的两个命令会在工程目录中生成vs的工程文件,vs打开该工程。然后执行以下配置:
(1)远程生成根目录的配置
在打开vs工程后,右键项目==》属性==》配置属性==》常规==》远程生成根目录。
在远程生成根目录中输入项目所在的根目录,该目录为工程目录的上一级目录,即有makefile文件的上一级目录。
注:远程生成计算机中为配置好的远程调试的配置,无需手动输入。vs中的远程调试配置可参考:https://blog.csdn.net/King_weng/article/details/103356602
(2)远程生成
点击项目属性页中的远程生成,并配置命令:
生成命令行:make
重新生成所有命令:make clean && make
清除命令行:make clean
注:此处配置要依据makefile而定,有时候可能会出错,此时可将生成命令行中的命令删除,直接在linux中使用make来生成,该方法比较麻烦的是每次修改完代码后需要重新在linux中使用make来重新生成,不能直接使用vs来远程生成。
(3)调试
点击项目属性页中的远程生成,并配置命令:
程序:生成的可执行文件的路径
程序参数:程序运行时所需要的参数
工作目录:工程的路径,通常为makefile所在的路径。
注:此处路径一定要填写正确,否则调试的时候会出错。
配置完成后则可在使用visual studio上直接调试,可查看局部变量的值,同时也可以查看linux平台中的输出。