vscode配置遠程linux系統調試

来源:https://www.cnblogs.com/magicdmer/archive/2023/10/19/17775256.html
-Advertisement-
Play Games

前言 我的主力環境是 Windows 系統,但是同樣需要維護一些 linux 工程代碼。一般情況下,只需要開個 vmware 虛擬機,裝個 linux 系統就可以進行修改,編譯和調試操作,但是有時候我卻需要對 linux 真機環境進行遠程調試,這時候如果能直接在 windows 系統載入 linux ...


前言

我的主力環境是 Windows 系統,但是同樣需要維護一些 linux 工程代碼。一般情況下,只需要開個 vmware 虛擬機,裝個 linux 系統就可以進行修改,編譯和調試操作,但是有時候我卻需要對 linux 真機環境進行遠程調試,這時候如果能直接在 windows 系統載入 linux 工程代碼進行遠程調試,那當然是最好不過的。經過後續的調查,發現有兩個方案,一個是使用 VisualGDB 插件,一個是直接使用 vscode ,其中 VisualGDB 插件是最傻瓜的,配合 visual stduio 使用,但是我們需要尋找特別版,且需要熟悉其使用方法和配置,vscode 就相對輕量簡單,大家可以根據自己的需求選擇方案,這裡介紹一下 vscode 配置遠程linux調試的方法

流程

首先是編寫 vscodelaunch.json 文件,內容如下:

{
    // 使用 IntelliSense 瞭解相關屬性。 
    // 懸停以查看現有屬性的描述。
    // 欲瞭解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "remote-attach",
            "type": "cppdbg",
            "request": "attach",
            "program": "/usr/bin/test",
            "processId":"${command:pickRemoteProcess}",
            "sourceFileMap":{
                "/home/magicdmer/workplace/test": "D:/Gitwork/test"
            },
            "pipeTransport": {
                //"pipeCwd": "/usr/local/test",
                "pipeProgram": "C:/Windows/System32/OpenSSH/ssh.exe",
                "pipeArgs": ["[email protected]"],
                "debuggerPath": "/usr/bin/gdb"
            },
            "MIMode": "gdb"
        }
    ]
}

這裡要註意下麵幾個欄位:

  1. processId,這個需要填寫 pickRemoteProcess, 而本地調試是 pickProcess 很容易被忽略
  2. sourceFileMap,這個是源文件映射,我們在linux編譯環境編譯test調試版程式後,test程式自身會包含代碼所在的位置信息,我們需要在這裡把原本的位置信息映射到本地的對應目錄
  3. pipTransport,這個就是用來遠程掛載目標機器調試程式的配置信息,下麵進行詳細描述

pipeTransport 的配置

我們上面的配置文件使用 ssh 來進行遠程通訊,其中 OpenSSH 程式應該在 win10 之後都是自帶的,大家可以自行查看,如果沒有的話可以自行安裝一個即可

我們使用 vscode 的 Remote - SSH 系列插件後,打開遠程系統上的源碼文件夾,vscode 會彈框提示我們輸入用戶密碼,但是我們進行 pipTransport 遠程配置的時候,它是不會彈框提示我們輸入密碼的,我們必須配置一種可以無需輸入密碼,無需確定,直接 ssh 遠程目標機器的方法,流程如下:

  1. 生成本地 ssh 的key文件
    ssh-keygen -t rsa
    
    ssh-keygen 也是 openssh 目錄中自帶的程式,運行後預設是在本地用戶目錄下的 .ssh 目錄下
  2. 然後我們需要將生成的key文件拷貝到需要調試的 linux 機器,這裡使用 ssh-copy-id 工具,這個工具 openssh 沒有自帶,需要安裝 git-for-windows 或者 msys64 交叉編譯環境,使用其自帶的:
    ssh-copy-id [email protected]
    
    它會自動從當前系統的用戶目錄下的 .ssh 目錄中拷貝對應文件到目標機器,寫入相關配置文件,如果需要指定目錄文件,可以使用 -i 選項指定證書文件
  3. 然後我們使用 cmd 命令行,用 ssh 連接一次遠程機器,會提示是否繼續連接,我們輸入 yes 繼續,它會保留我們的選擇,這樣就完成了無需密碼和確認直接連接遠程 linux 環境的配置操作

最後,我們就可以愉快的玩耍了

~ 個人簽名: 無論發生什麼都不要停下,無論到什麼時候都要繼續前行,要一直走下去,直到生命終止的那一刻!~
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作為一為 Java 開發工程師,寫數據的查詢 SQL 是必備的技能。在 日常生活中,是否統計過讀數據和寫數據的頻率。以來開發經驗來說,查詢數據的操作語言是多於寫數據的。 有的信息系統,數據只初始化一次,甚至是服務一輩子。 接觸過很多的 web 開發系統,都是為了管理數據而生存的。要產生數據,才能管理 ...
  • 對於網路通信中的服務端來說,顯然不可能是一對一的,我們所希望的是服務端啟用一份則可以選擇性的與特定一個客戶端通信,而當不需要與客戶端通信時,則只需要將該套接字掛到鏈表中存儲並等待後續操作,套接字服務端通過多線程實現存儲套接字和選擇通信,可以提高服務端的併發性能,使其能夠同時處理多個客戶端的請求。在實... ...
  • MD5的全稱是message-digest algorithm 5,MD5演算法屬於hash演算法的一類,對消息進行運算,產生一個128位的消息摘要(32位數字字母),並且加密不可逆,相同數據的加密結果一定相同。 C# 實現MD5加密。MD5加密16位和32位 ...
  • C# 中的 Queue 是一種基於鏈表的先進先出 (FIFO) 數據結構。以下是一個簡單的 Queue 實例: /// <summary> /// 普通隊列 /// </summary> public void QueueShow() { // 創建一個Queue Queue<string> que ...
  • 引言 面試中,常會問道,在大數據量的字元串拼接情況,為什麼 StringBuilder 性能比直接字元串拼接更好? 主要原因就是 string 是不可變類型,每次操作都會創建新的字元串對象,頻繁操作會導致記憶體頻繁的分配和回收,就會降低性能, 而 StringBuilder 是可變類型,它允許對字元串 ...
  • 此博客是C#學習筆記中的進階部分,設計C#語言中的高級知識,介紹了List與ArrayList、Stack和Queue以及Hashtable等數據結構, 泛型,泛型類型數據結構,以及糾纏不清的委托與事件。還涉及到不常見但常用的一些知識小點,如匿名函數,Lambda表達式,協變和逆變,多線程, 反射和... ...
  • 【學習課程】:【【小白入門 通俗易懂】2021韓順平 一周學會Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e054 ...
  • 前言 該方案實現的效果就是通過指定用戶名可以直接ssh連接到某個linux機器中的chroot開發環境,在 ubuntu 22.04 環境測試通過 流程 首先我們需要有個現成的 chroot 環境,我這裡是 debian10-aarch64 文件夾,如果你沒有可以參考我先前的文章製作一個: http ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...