ホームページ  >  記事  >  システムチュートリアル  >  vscode を使用して Linux カーネルをリモートでデバッグする

vscode を使用して Linux カーネルをリモートでデバッグする

WBOY
WBOY転載
2024-02-05 12:30:121391ブラウズ

######序文######

前の記事では、QEMU GDB を使用して Linux カーネルをデバッグする方法を紹介しました。ただし、GDB を直接使用してコードをデバッグしたり表示したりするのはあまり便利ではない場合があるため、このような重要な機会に vscode のアーティファクトが失われることがあります。この記事では、vscode を使用してカーネルをリモートでデバッグする方法を紹介します。 この記事の環境:

ウィンドウズ10######

vscode

  • ubuntu 20.04
  • 私は個人的に Tencent Cloud Server を使用しているため、仮想マシンをインストールするプロセスを保存しています。 vscode 設定から直接開始します。
  • vscode プラグインのインストール

リモート ssh

プラグイン ライブラリで Remote-SSH プラグインを見つけてインストールします。

インストールが完了すると、右側のツールバーに追加機能が表示されます

F1 を押してダイアログ ボックスを呼び出し、「remote-ssh」と入力して、「ssh 構成ファイルを開く」を選択します。

vscode を使用して Linux カーネルをリモートでデバッグする

最初の構成ファイルを選択します

vscode を使用して Linux カーネルをリモートでデバッグするrree

秘密キー方式を使用してサーバーにログインしており、IdentityFile には秘密キーの絶対パスが入力されています。

vscode を使用して Linux カーネルをリモートでデバッグする設定後、プラスボタンをクリックしてサーバーにログインします

vscode を使用して Linux カーネルをリモートでデバッグする

エラー: SSH ホスト XX のセットアップ: scp を使用して VS Code サーバーをホストにコピーしています

接続中にスタックし、SSH ホスト XX のセットアップ: scp を使用して VS Code サーバーをホストにコピーするのを待っています。 vscode を使用して Linux カーネルをリモートでデバッグする ######理由######

ホーム ディレクトリ ~/.vscode-server/bin/commit_id/vscode-servlet.tar.gz がリモート サーバーにダウンロードされていないためです。

commit_id は vscode の [ヘルプ] -> [ターミナル] で確認できます。

######解決######

次に、vscode-servlet.tar.gz を手動でダウンロードします。以下のリンクからダウンロードしてください。 リーリー 次のコマンド行を実行します。

~/.vscode-server/bin

ディレクトリ内のすべてを削除します。 リーリー

~/.vscode-server/bin

ディレクトリがない場合は作成します。存在する場合は、この手順を無視してください*。

リーリー
ダウンロードした圧縮パッケージ vscode-server-linux-x64.tar.gz を ~/.vscode-server/bin ディレクトリに配置します。

次の 3 行のコマンドを実行します。

${commit_id}

は、手順 2 で記録した commit_id に置き換える必要があります。 <pre class="brush:js;toolbar:false;">cd ~/.vscode-server/bin tar -zxf vscode-server-linux-x64.tar.gz mv vscode-server-linux-x64 ${commit_id} </pre> <h4 style="margin-top: 30px;margin-bottom: 15px;padding: 0px;font-weight: bold;color: black;font-size: 18px"><span class="content">报错:Permissions for ‘vscode_rsa’ are too open.</span></h4> <p>然后就可以在原来的文件浏览界面,打开远程的文件夹。但是在配置好进行连接的时候,VScode的终端报错了:</p> <pre class="brush:js;toolbar:false;">@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @     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 &quot;vscode_rsa&quot;: bad permissions </pre> <p>根本原因是私钥的权限问题。这要是在Linux里,直接使用chmod,就可以修改,修改为644即可,但是windows,就稍微麻烦点。</p> <p>在私钥上右击选择属性,然后选择【安全】选项卡,然后点击下面的【高级】按钮,然后在新弹出的窗口下方点击【禁用继承】,然后点击继承那个按钮上面的【添加】按钮重新将当前window登录用户设置为私钥的所有者,并勾选所有权限。最后跟下面一样即可:</p> <img src="https://img.php.cn/upload/article/000/887/227/170710742075629.png" alt="vscode を使用して Linux カーネルをリモートでデバッグする"><p>这时再次打开VScode远程连接,就没有问题了。</p> <h3 style="margin-top: 30px;margin-bottom: 15px;padding: 0px;font-weight: bold;color: black;font-size: 20px"><span class="content" style="font-size: 16px;color: #222">C/C++</span></h3> <p>安装C/C++插件</p> <img src="https://img.php.cn/upload/article/000/887/227/170710742073720.png" alt="vscode を使用して Linux カーネルをリモートでデバッグする"><p>依次点击【运行】->【打开配置】,将以下配置复制到launch.json中。</p> <pre class="brush:js;toolbar:false;">{     &quot;version&quot;: &quot;0.2.0&quot;,     &quot;configurations&quot;: [         {             &quot;name&quot;: &quot;kernel-debug&quot;,             &quot;type&quot;: &quot;cppdbg&quot;,             &quot;request&quot;: &quot;launch&quot;,             &quot;miDebuggerServerAddress&quot;: &quot;127.0.0.1:1234&quot;,             &quot;program&quot;: &quot;${workspaceFolder}/vmlinux&quot;,             &quot;args&quot;: [],             &quot;stopAtEntry&quot;: false,             &quot;cwd&quot;: &quot;${workspaceFolder}&quot;,             &quot;environment&quot;: [],             &quot;externalConsole&quot;: false,             &quot;logging&quot;: {                 &quot;engineLogging&quot;: false             },             &quot;MIMode&quot;: &quot;gdb&quot;,         }     ] } </pre> <p>然后在main函数中,打上两个断点,在服务器上开启QEMU,F5即可开启调试。</p> <img src="https://img.php.cn/upload/article/000/887/227/170710742020990.png" alt="vscode を使用して Linux カーネルをリモートでデバッグする"><p>在vscode中调试内核,和正常的在windows调试代码是一样的,侧边栏可以看到变量,监视变量,调用堆栈等,非常方便。</p> <img src="https://img.php.cn/upload/article/000/887/227/170710742074035.png" alt="vscode を使用して Linux カーネルをリモートでデバッグする"><p>大功告成,以后就可以在可视化界面调试内核了!</p> <img src="https://img.php.cn/upload/article/000/887/227/170710742033287.png" alt="vscode を使用して Linux カーネルをリモートでデバッグする">

以上がvscode を使用して Linux カーネルをリモートでデバッグするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlxlinux.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。