您的位置:首页 > 财经 > 产业 > Linux开发:优化VSCode C++开发体验

Linux开发:优化VSCode C++开发体验

2024/12/26 10:51:45 来源:https://blog.csdn.net/stallion5632/article/details/141927756  浏览:    关键词:Linux开发:优化VSCode C++开发体验

文章目录

    • 0. 概要
    • 1. 配置C++额外头文件目录 includePath
    • 2. 解决C++代码查找所有引用“Find all reference”慢的问题
    • 3. 配置远程调试
    • 4. 使用VSCode的正则表达式批量替换文本

0. 概要

本文简要介绍了通过配置VSCode优化C++开发体验的四个要点:

  • 设置额外头文件路径以完善代码智能跳转;
  • 利用正则表达式进行高效的文本批量替换;
  • 配置远程调试以方便跨机调试;
  • 使用gtags插件加速“查找所有引用”的功能。

1. 配置C++额外头文件目录 includePath

本节将介绍如何在VSCode中设置C++代码所需的额外头文件(include)目录。

VSCode使用c_cpp_properties.json文件来管理C/C++项目的配置。通过这个文件,我们可以添加项目所需的头文件路径。

步骤如下:

  • 打开VSCode的C/C++配置文件
    按下Ctrl + Shift + P,然后搜索并选择C/C++: Edit Configurations (UI)C/C++: Edit Configurations (JSON)。这将打开项目的.vscode/c_cpp_properties.json文件。

  • 修改includePath字段
    c_cpp_properties.json文件中,你会看到一个includePath字段。将你的ARM64项目的头文件路径添加到这里。例如:

    {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/path/to/your/arm64/headers"],"defines": [],"compilerPath": "/path/to/aarch64-linux-gnu-g++","cStandard": "c11","cppStandard": "c++14","intelliSenseMode": "linux-gcc-arm64"}],"version": 4
    }
    

    上述配置中:

    • ${workspaceFolder}/**:这是当前工作区下的所有子文件夹。VSCode会自动在这些文件夹中查找头文件。
    • "/path/to/your/arm64/headers":这里需要替换成实际的ARM64项目的头文件目录的路径。

2. 解决C++代码查找所有引用“Find all reference”慢的问题

在使用VSCode编写C++代码时,可能会遇到右键点击“Find all references”功能响应缓慢且结果不够准确的问题。为了解决这一问题,可以考虑使用与Global组件关联的gtags插件。

步骤如下:

  • 安装gtags插件
    在VSCode中安装gtags插件是一种有效的解决方案。尽管C/C++ GNU Global插件也是一个不错的选择,但其效果可能会因环境和设置而异。建议根据个人情况选择合适的插件。

  • 在Ubuntu环境下安装Global
    在Ubuntu系统中,可以通过以下命令安装Global工具:

    sudo apt install global
    
  • 生成gtags索引
    在C++项目的源代码根目录下运行以下命令,以生成gtags索引文件:

    gtags .
    

    这会在当前目录下生成一个名为GTAGS的索引文件,其中包含代码中各种符号(如函数、变量、类等)的位置信息和上下文。

  • 使用“Find all references”功能
    完成上述步骤后,重新选择“Find all references”,你会发现检索速度明显加快,且结果更加准确。

3. 配置远程调试

要配置远程调试,我们需要对上述配置进行一些调整,以便能够连接到远程机器上运行的gdb实例。以下是一个简单的示例,假设我们有一个远程服务器,我们在该服务器上运行gdb,并且我们的本地机器可以访问这个服务器。

以下是修改后的配置文件,用于与远程gdb实例通信:

{"version": "0.2.0","configurations": [{"name": "Remote (gdb)","type": "cppdbg","request": "launch","targetArchitecture": "x86_64", // 如果目标架构不同,请指定相应的架构"program": "${workspaceFolder}/build/test","args": ["--lidar-ip","172.168.1.10", "--lidar-udp-port","8010", "--frame-number", "100", "--output-filename","test.pcd"],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerServerAddress": "remote-host:2345", // 替换 remote-host 为远程主机地址,端口号根据实际设置"setupCommands": [{"description": "Enable GDB pretty printing","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set disassembly style to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "start_remote_gdb", // 这里需要定义一个任务来启动远程gdb"miDebuggerPath": "/usr/bin/gdb" // 这个路径可能不需要,取决于你的配置}]
}

简单说明:

  1. miDebuggerServerAddress:设置了gdb服务器的地址和端口。你需要替换remote-host为实际的IP地址或主机名,并且根据实际情况更改端口号(默认是2345)。
  2. preLaunchTask:这个字段指向了一个预启动任务,该任务负责在远程主机上启动gdb并监听特定端口。你需要在VSCode的任务配置中定义这个任务。
  3. targetArchitecture:指定了目标程序的架构。如果目标程序是在不同的架构上运行的,则需要正确地设置此项。
  4. miDebuggerPath:这个字段指定了gdb的路径,在远程调试的情况下,这个字段可能不需要,因为gdb已经在远程主机上运行了。

为了使此配置生效,你需要确保远程主机上的gdb已经设置好并监听指定端口,同时确保网络允许从你的开发机到远程主机的连接。此外,还需要配置VSCode的任务来启动远程gdb。这通常涉及到SSH连接或其他方式将命令发送到远程主机。

4. 使用VSCode的正则表达式批量替换文本

本节将介绍如何在VSCode中使用正则表达式进行批量替换文本。

示例

假设你有以下文本:

foo123  
foo456  
bar789  

你想将所有以foo开头的单词替换为bar。你可以按照以下步骤操作:

  1. 在查找框中输入:\bfoo\w*
  2. 在替换框中输入:bar
  3. 点击“全部替换”按钮。

替换后的文本将变为:

bar  
bar  
bar789  

解释

  • 开启正则表达式模式:在查找和替换面板的左侧,有一个小的正则表达式图标(.*)。点击这个图标以启用正则表达式模式。
  • 查找框:在查找框中输入你想要匹配的正则表达式。例如,如果你想匹配所有以foo开头的单词,可以使用\bfoo\w*。这个正则表达式的解释是:\b匹配单词边界,foo匹配字面字符串,\w*匹配零个或多个字母、数字或下划线字符。
  • 替换框:在替换框中输入你想要替换成的内容。你可以使用$1$2等符号来引用正则表达式中的捕获组。例如将foo替换为bar,可以直接输入bar

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com