vscode远程到服务器(包括WSL)进行GDB调试

news2024/11/26 10:44:49

工欲善其事必先利其器,这句话不容小觑,调试工具做的好,对开发工作可起到事半功倍。

本文主要讲vscode远程到服务器进行在线GDB调试手段,包含对WSL的远程调试,可以轻松对照源码进行应用程序调试。


文章目录

    • 一、vscode远程服务器(或虚拟机)
    • 二、vscode远程服务器(WSL)
    • 三、vscode GDB


一、vscode远程服务器(或虚拟机)

1、vcode的本地需要建议安装这几个插件,ssh必需装。
在这里插入图片描述

2、创建远程连接到服务器或虚拟机
在这里插入图片描述
在这里插入图片描述

如果ssh 连接不上,可检查C:\Users\xxx.ssh\config 配置文件是否没有权限,可以尝试删除掉这个文件,再自动创建

连接成功后,就可以打开想要访问的服务器代码路径了
在这里插入图片描述


二、vscode远程服务器(WSL)

如果是win10本地安装了WSL,代码放在wsl中,需要通过vscode ssh 到WSL环境中进行代码调试,这种方法对本地调试应用程序代码很便利(前提是wsl环境可以运行你编译的代码)
步骤跟上面类似。
1、安装wsl插件
在这里插入图片描述
2、远程连接要选择WSL(而不是ssh)
在这里插入图片描述
其他步骤跟上面远程到服务器是一样的了,如果你的代码放在wsl的/mnt/d/xxxx 下,vscode中打开对应绝对路径访问即可,切记不能通过软链接接路径去访问,否则影响GDB调试。


三、vscode GDB

凡是应用程序能在本机或者服务器、虚拟机运行的,采用远程GDB工具调试就太棒了。
1、远程服务器或者WSL需要安装插件GDB debug(别的如C/C++相关插件也建议装上)
在这里插入图片描述
2、创建一个gdb的配置文件
在这里插入图片描述
3、配置文件填写,很关键,这里提供一个模板
其中,program和args是你需要填写的可执行程序和传参

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动", //配置名称,显示在配置下拉菜单中
            "type": "cppdbg", //配置类型
            "request": "launch", //请求配置类型,可以是启动或者是附加
            "program": "${workspaceFolder}/xxx/xx", //程序可执行文件的完整路径,${workspaceFolder}表示远程连接的初始路径
            "args": ["-i", "ens33", "-m", "-S"], //传递给程序的命令行参数
            "stopAtEntry": false,//可选参数,如果为true,调试程序应该在入口(main)处停止
            "cwd": "${workspaceFolder}", //目标的工作目录
            "environment": [], //表示要预设的环境变量
            "externalConsole": false,//如果为true,则为调试对象启动控制台
            "MIMode": "gdb",//要连接到的控制台启动程序
            "setupCommands": [ //为了安装基础调试程序而执行的一个或多个GDB/LLDB命令
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

4、切记编译应用程序增加调试选项(-g),否则GDB调试时候找不到源码,如下在makefile中添加
在这里插入图片描述
5、启动GDB,你就可以对着代码进行调试了。可以自定义增加断点、单步调试、变量监控、函数栈查看等操作,非常友好。
在这里插入图片描述


其他注意:远程机确保支持安装了ssh和gdb等服务和工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringCloud】一、认识微服务

文章目录 1、学习提纲2、和单体架构的比较3、认识微服务4、微服务技术常用框架5、SprigCloud6、服务拆分7、微服务远程调用 1、学习提纲 相比传统单体架构,微服务的整体架构如下图: 再引入日志、监控、持续集成、持续部署,就成了下面这个图&…

RocketMQ 的介绍和基本使用

介绍 在 RabbitMQ 的基本概念和五种模式使用示例 前半部分介绍了 MQ 的应用场景,以及多个 MQ 产品的对比,那时说到 RocketMQ 的客户端版本只有 Java , 现在 Apache RocketMQ 社区中也增加了 C NodeJS Python Go 的客户端。 RocketMQ 是阿里巴巴开源的一…

iOS正确获取图片参数深入探究及CGImageRef的使用(附源码)

一 图片参数的正确获取 先拿一张图片作为测试使用 图片参数如下: 图片的尺寸为: -宽1236个像素点 -高748个像素点 -色彩空间为RGB -描述文件为彩色LCD -带有Alpha通道 请记住这几个参数,待会儿我们演示如何正确获取。 将这张图片分别放在…

从零开始 Spring Boot 32:AOP II

从零开始 Spring Boot 32:AOP II 图源:简书 (jianshu.com) 之前写过一篇文章从零开始 Spring Boot 26:AOP - 红茶的个人站点 (icexmoon.cn),讨论了AOP的基本用法,但那篇文章相当粗疏,对Spring中的AOP技术讨…

免费快速部署ChatGPT线上聊天网页:ChatGPT API + Github + Railway

1、使用工具 (1)需要自己生成的openai api,获取API的网站:openAI API 获取方式:OpenAI的API key获取方法 (2)本次使用该参考项目进行部署:chatweb 需要将该项目fork到自己的仓库里 …

29 SQL——事务操作

create table account (id int auto_increment primary key comment 主键ID,name varchar(18) comment 姓名,money int comment 余额 )comment 账户表;insert into account(id, name ,money)values(null,张三,2000),(nul…

不定积分题型简单总结

不定积分 考研数学复习笔记,用来复习知识点用,如有不足还请指出,Thanks♪(・ω・)ノ 文章目录 不定积分1 原函数/不定积分 概念和性质2 原函数存在定理3 不定积分的基本公式4 不定积分的基本计算4.1 三角代换型…

中间件-RabbitMQ

文章目录 1.什么是MQ1.1 特点1.2 MQ产品分类 2.RabbitMQ2.1.RabbitMQ介绍2.2.使用Docker安装RabbitMQ 3.SpringBoot中使用RabbitMQ3.1.SpringAMQP3.2使用步骤 1.什么是MQ RabbitMQ官方文档 消息队列(Message Queue,简称MQ):是在消息的传输过程中保存消…

SpringBoot+Vue实现校园二手系统。前后端分离技术【完整功能介绍+实现详情+源码】

前言 文章内容有点长,建议打开右侧目录导航栏查看。 这个系统基本上可以改造为其它类似的系统。后台管理基本上一致。前台进行一些页面样式的改造就可以变成一个新的系统。有时间,做几个变体系统。 闲的无聊,把大学时候做的一个系统进行了重…

git源代码管理

文章目录 git源代码管理git单人本地仓库操作创建远程仓库(github为例)多人开发与冲突分支操作SSH(安全外壳协议) git源代码管理 文档连接:https://git-scm.com/docs git是用于源代码管理,方便多人协同开发…

架构整洁之道上篇(编程范式设计原则)

目录 1.概述 2.编程范式 2.1.结构化编程 2.2.面向对象编程 2.3.函数式编程 3.设计原则 3.1.单一职责原则 3.2.开闭原则 3.3.里氏替换原则 3.4.接口隔离原则 3.5.依赖反转原则 4.小结 1.概述 软件架构的终极目标是,用最小的人力成本来满足构建和维护该系…

2023 操作系统 R 复习大纲( 适用于太理软件 21 级)

目录 01.操作系统的定义 02.操作系统的基本类型及特征 1.批处理操作系统(单、多道) 2.分时操作系统 3.实时操作系统 03.操作系统的功能及特征 04.进程的定义、特征 05.进程基本状态及其转换原因 06.进程互斥、同步 07.进程控制块的内容、作用 …

Java数据类型之整数类型与浮点数

标识符(名字) 作用域 离其最近的大括号 { } !!! 数据类型的分类 赋值时,不可超过数据类型的范围(不可越界) 常量的进制转换 tips:给变量赋值时,值可以为不同…

从代码层面理解Transformer

跑通 代码使用的是 https://github.com/jadore801120/attention-is-all-you-need-pytorch, commit-id 为: 132907d 各模块粗览 Transformer 主要包括一堆参数, 以及encoder和decoder forward的时候主要做了如下操作. 先 pad_mask过encoder过decoder输出logit 从train.py …

C语言-【指针一】-【什么是指针/指针类型】

对于初学者来说,是不是一提到指针,大家就头疼啊,哈哈哈,当然,它都这么“吓人”了,那么在C语言中扮演的角色也很重要,当然,它也是C语言中的一个特色,如果我们把它拿下的话…

ESP32CAM,点亮一个LED(Arduino平台)

前言 (1)在此,吐槽一下乐鑫的函数介绍,真的难找。恶心的一批。气死我了。 (2)接下来我将会介绍我是如何找到ESP32的Arduino平台的函数库的。你将会知道为啥我这么大的戾气。 (3)同时…

linux系统中输入与输出重定向

什么是输入输出重定向 我们在日常工作中最常用的是输出重定向,输出重定向就是将原本要打印到屏幕中的信息重定向到一个文件中。而输入重定向呢就是指把文件导入到命令中去,听起来是不是有点抽象啊,后面看博主举例说明就很好理由啦。 输出重定…

通讯录信息管理系统

系列文章 任务50 通讯录信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试插入按编号查找按姓名查找按城市查找更新排序浏览删除统计…

超好玩C++控制台打飞机小游戏,附源码

我终于决定还是把这个放出来。 视频在这:https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停,建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss(上面视频2分47秒)。 挺好…

轻松转换CAJ文件为PDF格式:免费工具和技巧

在处理中国知网(CNKI)数据库中的CAJ文件时,将其转换为更常用的PDF格式可以提供更广泛的共享和便捷的阅读体验。本文将介绍一种免费的工具和一些技巧,帮助您轻松地将CAJ文件转换为PDF格式。我们将使用记灵在线工具进行操作。 记灵…