ホームページ >開発ツール >VSCode >vscodeでリモートgdbをデバッグするにはどうすればよいですか?詳しい方法の説明

vscodeでリモートgdbをデバッグするにはどうすればよいですか?詳しい方法の説明

青灯夜游
青灯夜游転載
2023-04-11 19:14:433276ブラウズ

vscode でリモート gdb をデバッグするにはどうすればよいですか?以下の記事では、vscode のリモート gdb デバッグ方法を紹介しますので、ご参考になれば幸いです。

vscodeでリモートgdbをデバッグするにはどうすればよいですか?詳しい方法の説明

最近、同僚の指導で gdb のデバッグに vscode を使ってみたのですが、使ってみると「とても良い」と感じました。

早速ですが、この記事で達成することは、Linux サーバー上の C コードと Windows 側の Arm 組み込みデバイスをリモート デバッグし、GDB デバッグの構成と使用法を整理することです。

1. リモート接続

まずサーバーへのリモート接続を確立する必要があり、プラグイン ライブラリで「remote-ssh」を検索し、ダブルクリックします。ダウンロードしてインストールするには (下の図ではすでにインストールされています)、インストール後、リモート リソース マネージャーがサイドバーに表示されます。 [推奨される学習: vscode チュートリアル プログラミング教育 ]

+ 記号をクリックし、ポップアップ コマンドに「ssh」と入力しますコマンドにログインするためのウィンドウが表示され、プロンプトに従ってパスワードを入力して確認すると、接続が成功します

#2. GDB 環境の構成

サーバー上に c コードを作成します。例として「Linux C Get System User Name」のコードを示します。非常に簡単です。

#include <unistd.h>
#include <pwd.h>
#include <iostream>
 
int main()
{
	struct passwd* pwd;
	uid_t userid;
	userid = getuid();
	pwd = getpwuid(userid);
 
	std::cout << "pw_name:" << pwd->pw_name << std::endl;
	std::cout << "pw_passwd:" << pwd->pw_passwd << std::endl;
	std::cout << "pw_uid:" << pwd->pw_uid << std::endl;
	std::cout << "pw_gid:" << pwd->pw_gid << std::endl;
	std::cout << "pw_gecos:" << pwd->pw_gecos << std::endl;
	std::cout << "pw_dir:" << pwd->pw_dir << std::endl;
	std::cout << "pw_shell:" << pwd->pw_shell << std::endl;
 
    return 0;
}

コンパイル方法は次のとおりです。以下のように、必ず -g コマンドを追加してください。それ以外の場合は、gdb

g++ -g test.cpp -o test

でデバッグできません。次に、「ファイル」-「フォルダーを開く」をクリックして、作成されたコード パスを見つけます。確認後、リソース内にコード ファイルが表示されます。左側がマネージャー。

最初の実行では c 拡張機能をインストールする必要があります。拡張機能のページで、C/C をインストールします。

## また、「GDB Debug」を検索してインストールします

インストール後、「実行とデバッグ」ボタンをクリックし、「launch.json ファイルを作成」​​をクリックし、

を選択します。 C (GDB /LLDB) 項目で、launch.json ファイルが自動的に生成されます。内容は次のとおりです。

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": []
}
以下の内容に従って、適宜変更してください

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

3. GDB のデバッグ方法

ソースコードの行番号の左側をクリックしてブレークポイントを追加します。ブレークポイントを設定した後、「実行とデバッグ」をクリックします。 "--(gdb) で開始します。次のようにデバッグ ページに入ることができます。

次のように直接デバッグ ページにアクセスできます。デバッグの目的を完了するには、変数領域の変数値を確認してください。

一般的に使用されるデバッグ キーは次のとおりです。

F5 デバッグ開始

F10 シングル ステップ スキップ

F11 シングル ステップ デバッグ

シフト F11 シングルステップアウト

ctrl シフト F5 デバッグ再開

shift F5 デバッグ停止

4. 問題の概要

以前にデバイスに接続したことがあり、その後交換したデバイスの IP が同じである場合、またはデバイスが再インストールされたが IP が変更されていない場合、再接続時にエラーが報告されます。その理由は、ホストがサーバー IP を known_host としてリストします

IP を検索、変更、削除してから再接続します

詳細については、こちらをご覧ください。 VSCode については、

vscodeBasic Tutorial! を参照してください。

以上がvscodeでリモートgdbをデバッグするにはどうすればよいですか?詳しい方法の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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