vscode C++远程调试运行(学习C++用)攻略
简介
本文主要介绍如何使用Visual Studio Code(以下简称VScode)进行C++远程调试运行。远程调试可以方便读者在本地开发环境中编辑、调试和运行分布在远端主机上的代码,对于学习C++等场景非常有用。
步骤
1. 环境搭建
在使用VScode进行远程调试之前,需要先搭建好相关的环境。具体来说,需要在远程主机上安装好gcc/g++编译器和GDB调试器。
以Ubuntu为例,可以使用以下命令安装依赖环境:
sudo apt-get install g++ gdb openssh-server
2. 在远程主机上设置SSH登录
在VScode中进行远程调试,需要通过SSH登录到远程主机,因此需要先在远程主机上配置好SSH登录。
具体的操作过程如下:
- 在远程主机上安装好openssh-server。
- 打开终端,使用以下命令生成SSH密钥:
ssh-keygen -t rsa -C "your_email@example.com"
- 将生成的公钥复制到远程主机的~/.ssh/authorized_keys文件中,如下所示:
cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
这样就完成了SSH登录的设置。
3. 在VScode中打开远程工作区
首先需要在VScode中安装Remote Development扩展程序。安装好后,在菜单中选择“Remote-SSH: Connect to Host...”选项,输入SSH登录信息,即可连接到远程主机。
连接成功后,可以在文件菜单中选择“Open Folder”选项,选择远程主机上的工作目录,此时VScode就会打开远程工作区。
4. 在VScode中配置调试环境
在VScode中,需要配置好调试环境。具体来说,需要配置以下两个文件:launch.json和tasks.json。
(1)launch.json
launch.json文件用于配置调试器的运行参数。
在VScode中,可以使用Ctrl+Shift+D快捷键打开调试面板,然后点击“create a launch.json file”选项,系统会自动生成具体的launch.json文件。
在编辑器里按Ctrl + Shift + P, 输入C++
, 然后选择“C++: (GDB/LLDB) 生成 launch.json 配置” 快捷键自己输入也可以,打开编辑launch.json文件
在编辑完成后,需要根据实际情况进行修改。比如,需要指定程序的编译路径、运行路径、设置断点等。
示例如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)", // 配置名称,可以自定义
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/debug/hello_gdb", // 可执行文件路径
"args": [],
"stopAtEntry": true, // 设为 true 则程序会在main开始处停止
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
(2)tasks.json
tasks.json文件用于配置程序的编译和构建操作。可以使用以下快捷键打开并编辑tasks.json文件:
Ctrl+Shift+P -> Tasks: Configure Task -> C++: g++ build active file
示例如下:
{
"tasks": [
{
"type": "cppbuild", // 指定为 C++ 编译任务
"label": "C/C++: g++ build active file", // 任务名称,可以自定义
"command": "/opt/software/gcc/bin/g++", // g++编译器所在路径
"args": [
"-g",
"${workspaceFolder}/*.cpp", // 编译的源代码
"-o",
"${workspaceFolder}/debug/hello_gdb" // 编译生成的可执行文件
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"
}
特别地,需要注意的是,由于我们要在远端编译和调试程序,因此我们需要指定远程编译器的路径和选项,比如可以使用以下命令进行编译:
"args": [
"-g",
"${workspaceFolder}/*.cpp",
"-o",
"${workspaceFolder}/debug/hello_gdb",
"-L/usr/lib/x86_64-linux-gnu/ -lgtest -lpthread" //远程库文件链接
],
这样配置好后就可以编译调试C++代码了。
5. 在VScode中启动调试器
按F5键,就会启动调试器,如果程序设有断点,运行到断点处就会自动停下。如果需要单步运行,可以使用F10或F11键。
6. 示例说明
这里介绍两个使用示例,分别是:
- 在VScode中进行远程GDB调试
- 在VScode中进行网上获取的GTest测试
(1)示例1:在VScode中进行远程GDB调试
首先需要在本地新建一个C++工程,然后可以将该工程同步复制到远程主机中,也可以使用Git等版本控制工具在两个平台之间进行代码同步。
假设我们在工程中已经定义好了一个类MyClass,然后需要在远程主机中进行调试。此时,可以使用以下步骤进行调试:
- 在VScode中打开远程工作区,进入MyClass所在的目录。
- 使用以下命令编译代码:
Ctrl+Shift+P -> Tasks: Build
- 使用以下命令打开launch.json文件:
Ctrl+Shift+D -> 点击齿轮 -> Edit Configuration... -> C++ (GDB) Launch
然后在launch.json中修改program的路径为MyClass生成的可执行文件,比如:
{
"name": "C++ Launch (GDB)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/MyClass",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
]
}
- 在代码中添加断点,可以使用F9或点击行号来实现。
- 按F5启动调试,程序会进入MyClass的main函数。
在这个过程中,调试器会自动在远程主机上运行gdbserver,然后再通过ssh的方式连接到远程主机中的gdbserver,并在本地启动gdb进行调试。具体的细节可以参考VSCode的官方文档。
(2)示例2:在VScode中进行网上获取的GTest测试
假设我们从网上获取了一份GTest程序,需要在远程主机上进行测试。
在VScode中,有一个调试求值控制台可以用于调试功能。假如在“workspaceFolder”位置下的“my_test.cpp”文件中编写了现成的GTest测试,就可以在VScode用Ctrl + Shift + D打开调试面板,然后在控制台中输入:
cd /mnt/disk/
g++ my_test.cpp -o my_test -lgtest -lpthread
./my_test
第一行命令切换到远程工作区目录,第二行命令使用g++编译测试文件并链接gtest和pthread库,第三行命令运行编译后的可执行文件,从而进行测试。
以上就是两个使用示例,读者可以根据实际情况进行修改和调整。
结语
本文介绍了如何在VScode中进行C++的远程调试运行。本文仅作为介绍性文章,实际使用中可能需要根据不同的操作系统、开发环境、软件版本等进行合适的调整和修改,读者可以参考本文提供的思路进行操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vscode C++远程调试运行(学习C++用) - Python技术站