vscode远程调试Linux平台的cpp程序
最近在学习linux下的服务器开发,需要远程调试c++代码,传统的gdb命令行调试感觉不太好用,于是对调试方法做以下总结
一、ubuntu服务器设置
在虚拟机中安装gdb(调试工具),vscode通过ssh远程连接ubuntu后安装插件:C/C++,C/C++ extension pack(ubuntu上运行c++必备的插件)
二、vscode设置
1.在vscode中安装插件
C/C++
C/C++ extension pack
Remote developmeent(包括了远程ssh软件)
点击远程资源管理器
点击+号,以
ssh 用户名@服务器ip地址 -A的格式按enter,其中-A参数是用来开启代理转发(agent forwarding)的功能。代理转发可以让你在远程服务器上使用本地机器上的SSH密钥,这样就不需要在每次登录时输入密码或者把密钥复制到远程服务器上
将本地的公钥复制到服务器的.ssh文件夹,并且cat到authorized_keys,修改权限
在ssh的config文件中添加本地私钥的目录
这样就可以免密码访问远程服务器了
2.设置配置文件
该调试方法是远程连接了服务器后,直接在服务器上进行调试,所以需要在服务器的工程目录下配置本地的.vscode文件夹,里面包含了c_cpp_properties.json(规定了在服务器上的编译器位置,头文件目录,c++标准等),launch.json(gdb调试参数,需要依赖tasks.json先编译文件并利用参数g加入调试信息),tasks.json(包括了在服务器本地的编译运行信息)。
而在我的mac端里的工程目录也需要有.vscode文件夹,因为我不在本地运行,所以里面只需要有c_cpp_properties.json(本地的编译器位置,可以实现写代码的时候出现自动补全),sftp.json(用于将文件传输到ubuntu,但是在ubuntu上创建的文件不会自动传输回来,在config里添加”ignore”: [“.vscode”])
同时我也配置了vscode自动上传github,上传的是我mac端的内容,所以只会有源代码,而没有ubuntu中产生的file。
总的来说是在mac端写代码,自动上传github,自动把文件传输到linux,如果不需要调试就在命令行ssh直接运行linux上的代码,如果需要调试就用remote ssh打开linux直接在linux上调试,结果不会自动传回mac或者github,需要手动download
配置tasks.json
该文件用于配置g++的编译参数,从菜单栏选择Terminal>Configure Default Build Task, 在下拉栏里选择C/C++: g++ build active file. 之后生成tasks.json文件
1 | { |
如果在其中添加”command”: “make”,可以让task执行文件夹中的makefile,例如
1 | { |
配置launch.json
该文件用于配置gdb的启动参数,在菜单栏选择Debug>Add Configuration, 选择C++ (GDB/LLDB), 在下拉栏中选择g++ build and debug active file.生成launch.json文件
在launch中指定preLaunchTask,也就是在开启调试前应该怎么编译的任务(在用launch调试之前,应该在task中加入参数g,以增加调试信息,如果是makefile,则makefile里也要加g)

