• 正文
    • 前言
    • vscode插件安裝
    •  
    • 圖書(shū)推薦 
    • 本文參考
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

干貨 | 利用vscode遠(yuǎn)程調(diào)試Linux內(nèi)核

2022/05/01
2173
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

前言

上一遍文章介紹了利用QEMU+GDB調(diào)試Linux內(nèi)核。但是,有時(shí)候直接利用GDB調(diào)試查看代碼還不是很方便,所以,在這么重要的場(chǎng)合,怎么能少的了vscode這個(gè)神器呢。本篇文章介紹如何使用vscode遠(yuǎn)程調(diào)試內(nèi)核。

本文環(huán)境:

  • windows10vscodeubuntu 20.04

我個(gè)人使用的是騰訊云服務(wù)器,所以就省去了安裝虛擬機(jī)的過(guò)程。直接從vscode配置開(kāi)始。

vscode插件安裝

remote-ssh

在插件庫(kù)中找到Remote-SSH插件并且安裝。

 

安裝完成后右邊工具欄會(huì)多出一個(gè)功能

 

按F1呼出對(duì)話框,輸入remote-ssh,選擇open ssh configuration file。

選擇第一個(gè)配置文件

 

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host ubuntu
    HostName 服務(wù)器IP地址
    User 用戶名
    IdentityFile 私鑰路徑

我這里使用的是私鑰方式登陸服務(wù)器,IdentityFile填寫(xiě)的是私鑰的絕對(duì)路徑。

配置好后,點(diǎn)擊加號(hào)按鈕,就可以登陸服務(wù)器了

 

報(bào)錯(cuò):Setting up SSH Host XX:Copying VS Code Server to host with scp

在進(jìn)行連接的時(shí)候卡住了,一直在等待Setting up SSH Host XX:Copying VS Code Server to host with scp。

原因

是因?yàn)樵谶h(yuǎn)程的服務(wù)器下 家目錄~/.vscode-server/bin/commit_id/vscode-servlet.tar.gz 沒(méi)有下載下來(lái)。

commit_id 可以在vscode 【幫助】->【終端】中查看。

解決辦法

那我們就手動(dòng)進(jìn)行下載vscode-servlet.tar.gz。通過(guò)下面的鏈接進(jìn)行下載。

#注意把:${commit_id}替換成對(duì)應(yīng)的Commit ID
https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable

運(yùn)行下面這行命令。把~/.vscode-server/bin目錄下的東西刪除干凈。

rm ~/.vscode-server/bin/* -rf

沒(méi)有~/.vscode-server/bin目錄的話進(jìn)行創(chuàng)建,有的話請(qǐng)忽略這一步*。

mkdir -p ~/.vscode-server/bin

將下載的壓縮包vscode-server-linux-x64.tar.gz放在~/.vscode-server/bin目錄下。

運(yùn)行下面這三行命令,其中${commit_id}需要替換成第2步記錄的commit_id.

cd ~/.vscode-server/bin
tar -zxf vscode-server-linux-x64.tar.gz
mv vscode-server-linux-x64 ${commit_id}

 

報(bào)錯(cuò):Permissions for 'vscode_rsa' are too open.

然后就可以在原來(lái)的文件瀏覽界面,打開(kāi)遠(yuǎn)程的文件夾。但是在配置好進(jìn)行連接的時(shí)候,VScode的終端報(bào)錯(cuò)了:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: UNPROTECTED PRIVATE KEY FILE!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'vscode_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "vscode_rsa": bad permissions

根本原因是私鑰的權(quán)限問(wèn)題。這要是在Linux里,直接使用chmod,就可以修改,修改為644即可,但是windows,就稍微麻煩點(diǎn)。

在私鑰上右擊選擇屬性,然后選擇【安全】選項(xiàng)卡,然后點(diǎn)擊下面的【高級(jí)】按鈕,然后在新彈出的窗口下方點(diǎn)擊【禁用繼承】,然后點(diǎn)擊繼承那個(gè)按鈕上面的【添加】按鈕重新將當(dāng)前window登錄用戶設(shè)置為私鑰的所有者,并勾選所有權(quán)限。最后跟下面一樣即可:

這時(shí)再次打開(kāi)VScode遠(yuǎn)程連接,就沒(méi)有問(wèn)題了。

C/C++

安裝C/C++插件

 

依次點(diǎn)擊【運(yùn)行】->【打開(kāi)配置】,將以下配置復(fù)制到launch.json中。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "kernel-debug",
            "type": "cppdbg",
            "request": "launch",
            "miDebuggerServerAddress": "127.0.0.1:1234",
            "program": "${workspaceFolder}/vmlinux",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "logging": {
                "engineLogging": false
            },
            "MIMode": "gdb",
        }
    ]
}

然后在main函數(shù)中,打上兩個(gè)斷點(diǎn),在服務(wù)器上開(kāi)啟QEMU,F(xiàn)5即可開(kāi)啟調(diào)試。

在vscode中調(diào)試內(nèi)核,和正常的在windows調(diào)試代碼是一樣的,側(cè)邊欄可以看到變量,監(jiān)視變量,調(diào)用堆棧等,非常方便。

大功告成,以后就可以在可視化界面調(diào)試內(nèi)核了!

 

圖書(shū)推薦 

圖書(shū)簡(jiǎn)介

嵌入式實(shí)時(shí)操作系統(tǒng)是嵌入式人工智能物聯(lián)網(wǎng)終端的重要工具和運(yùn)行載體。本書(shū)以國(guó)產(chǎn)RT-Thread實(shí)時(shí)操作系統(tǒng)為背景,闡述實(shí)時(shí)操作系統(tǒng)的線程、調(diào)度、延時(shí)函數(shù)、事件、消息隊(duì)列、信號(hào)量、互斥量等基本知識(shí)要素,并給出實(shí)時(shí)操作系統(tǒng)下的程序設(shè)計(jì)方法。全書(shū)分為基礎(chǔ)應(yīng)用(第1~7章)、原理剖析(第8~12章)及綜合實(shí)踐(第13~14章)三篇,如果讀者只從事實(shí)時(shí)操作系統(tǒng)下的應(yīng)用開(kāi)發(fā),可只閱讀基礎(chǔ)應(yīng)用篇與綜合實(shí)踐篇;如果希望理解實(shí)時(shí)操作系統(tǒng)原理,則建議通讀全書(shū)。

本書(shū)是RT-Thread官方推薦圖書(shū),面向嵌入式人工智能與物聯(lián)網(wǎng)領(lǐng)域,將應(yīng)用與原理分開(kāi)闡述,分基礎(chǔ)應(yīng)用、原理剖析、綜合實(shí)踐三篇,循序漸進(jìn),更利于讀者學(xué)習(xí)和應(yīng)用RTOS。

本文參考

https://www.it610.com/article/1295167638502187008.htm

https://blog.csdn.net/weixin_39529413/article/details/108775129

https://learnku.com/articles/57161

https://blog.csdn.net/AhznuIOT/article/details/117459364

https://blog.csdn.net/Taylor_0522/article/details/118733368

https://blog.csdn.net/code_peak/article/details/118769074

https://www.bilibili.com/read/cv15173707/

https://zhuanlan.zhihu.com/p/445453676

https://wenfh2020.com/2021/12/03/ubuntu-qemu-linux/

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

作者就職于某500強(qiáng)公司,擔(dān)任BSP工程師。具有豐富的嵌入式開(kāi)發(fā)經(jīng)驗(yàn)。專欄主要分享計(jì)算機(jī)基礎(chǔ),操作系統(tǒng),Linux驅(qū)動(dòng)開(kāi)發(fā),Arm體系與架構(gòu),C/C++,數(shù)據(jù)結(jié)構(gòu)與算法等相關(guān)文章。歡迎關(guān)注我的公眾號(hào)【嵌入式與Linux那些事】,一起學(xué)習(xí)交流。