通过vscode远程编译调试Ubuntu上的C++代码,脱离gdb的命令行调试难度

基于Windows安装的vscode远程连接Ubuntu的C++开发环境搭建与代码调试Windows安装vscode,及安装c++相关插件,远程插件

vscode的远程连接Ubuntu

远程连接的详细过程可以参考VS Code 通过SSH远程连接到 Ubuntu 服务器,Ubuntu的远程开发

Ubuntu安装的软件

#这个命令用于在基于 Debian 的 Linux 系统(如 Ubuntu)上安装 OpenSSH 服务器。OpenSSH 允许用户通过安全的 SSH 协议远程登录到系统。安装 openssh-server 后,你可以使用 SSH 客户端连接到服务器,进行远程管理和文件传输。
sudo apt-get install openssh-server
#这个命令用于安装 GDB(GNU Debugger),它是一个强大的调试工具,用于调试 C、C++ 和其他编程语言编写的程序。开发者可以使用 GDB 在程序崩溃时检查堆栈跟踪,设置断点,观察程序的执行等。
sudo apt-get install gdb
#这个命令安装 gdbserver,它是 GDB 的一个服务器端工具,通常用于远程调试。当程序在目标设备或远程机器上运行时,你可以通过 GDB 在本地机器上进行调试。gdbserver 会在目标机器上运行,并等待来自 GDB 客户端的调试连接。
sudo apt-get install gdbserver

添加或修改launch.json

在vscode的菜单栏选择 运行–添加配置,会自动生成launch.json配置文件
默认是这样的:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": []
}

我们需要在vscode调试我们的Ubuntu上面的代码,这时我们的例子(例子在这里)中的内容应该这样:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0", // 这是 VS Code 调试配置文件的版本号。一般来说,不需要修改,除非需要与新版本的 VS Code 配合使用。
    "configurations": [ // 配置项数组,每个配置项描述如何启动调试会话。
        {
            "name": "(gdb) Launch", // 配置的名称,这里是 "Launch",用于标识此调试配置,用户在 VS Code 中选择时看到的名称。
            "type": "cppdbg", // 调试器类型。`cppdbg` 表示 C++ 调试,意味着该配置是用于调试 C++ 程序的。
            "request": "launch", // 启动方式,`launch` 表示启动一个新程序进行调试。如果是 `attach`,则表示附加到一个已经运行的程序上。
            "program": "${workspaceFolder}/main", // 要调试的程序路径。`${workspaceFolder}` 是一个 VS Code 变量,指代当前工作空间的根目录。最终路径会被解析为:`<workspaceFolder>/bin/program`,即程序的执行文件。
            "args": [], // 启动程序时传递给程序的命令行参数,当前为空,表示没有额外的命令行参数。
            "stopAtEntry": false, // 是否在程序入口处停止(即 main 函数)。如果设置为 `true`,程序会在启动时暂停在主函数的入口处,便于进行调试。此处为 `false`,表示不会暂停在入口。
            "cwd": "${workspaceFolder}", // 程序运行时的当前工作目录。`${workspaceFolder}` 变量指代工作空间的根目录。此配置表示程序会在工作空间的根目录下运行。
            "environment": [], // 启动程序时传递给程序的环境变量。当前为空,意味着不会设置任何自定义的环境变量。
            "externalConsole": false, // 是否在外部控制台中启动程序。`false` 表示不使用外部控制台,调试信息将在内置的终端窗口中显示。如果设置为 `true`,则会在一个新的控制台窗口中启动程序。
            "MIMode": "gdb", // 选择使用的调试协议。`gdb` 表示使用 GNU 调试器(GDB)进行调试。
            "miDebuggerPath": "/usr/bin/gdb", // GDB 调试器的路径。这里指定了 GDB 的路径,通常是在 Linux 系统中 GDB 的安装路径。
            "setupCommands": [ // 调试会话开始时要执行的 GDB 命令列表。
                {
                    "description": "Enable pretty-printing for gdb", // 设置命令的描述,通常是对该命令的解释,显示在调试面板中。
                    "text": "-enable-pretty-printing", // GDB 命令,启用漂亮打印(Pretty-Printing)。这会使 GDB 在打印 C++ STL 容器(如 `std::vector`、`std::map` 等)时,显示更易于理解的格式。
                    "ignoreFailures": true // 如果此命令失败,也不会中断调试会话。通常用于非关键性设置命令,确保不会因小问题而中止调试。
                }
            ] // 设置调试会话启动时需要执行的所有命令(在这里只有一个命令)。
        }
    ]
}

最后注意一点,在我们使用gcc或g++编译链接的时候,我们必须要加上-g参数,不然调试就不到断点了。

gcc -g -o main main.c

完成了,打上你的断点,按F5试试,是不是到断点了,再按安F10 ,这跟visual studio是不是没什么区别了,搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值