0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】VSCodeでC++デバッガの設定をする

Posted at

環境

元のOS win11 or mac Monterey 12.7.6
docker desktop
ubuntu24.04.1(noble numbat)
VSCode

前提

dockerでubuntuを動かしてVScodeでリモート接続をしてその中で作業をする
C++,gccは既にインストール済み

gccはC言語のコンパイラ、g++はgccに含まれているC++のコンパイラ
gdb(gnu debugger)はデバッガーのこと

必要なファイルを作成する

launch.json

目的: デバッグ構成を定義する。
場所: .vscode ディレクトリ内。
内容: デバッガの種類、実行ファイルのパス、引数、作業ディレクトリ、環境変数など。

tasks.json

launch.jsonから指定したlavelを呼び出される
目的: ビルドやその他のタスクを定義する。
場所: .vscode ディレクトリ内。
内容: コンパイル、テスト、デプロイなどのタスクを自動化するための設定。
各タスクについて補足
ビルドタスク: プログラムをコンパイルするためのタスクを定義。
テストタスク: 単体テストや統合テストを実行するタスクを定義。
デプロイタスク: アプリケーションをデプロイするためのタスクを定義。

作業概要

launch.jsonでデバッグの設定を記述してtasks.jsonに記述してあるビルドタスクを呼び出す

躓いたところ

gdbが入っていない

下記コマンドを使用してubuntuにインストールする

sudo apt-get install gdb

ルートディレクトリのinput.txtに記載したものを入力として渡せない

launch.jsonのargsに下記を追加する

"args": ["<","${workspaceFolder}/input.txt"]

${workspaceFolder}は現在作業中フォルダのルートディレクトリという意味

設定ファイル

lauch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++ Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/a.out",
            "args": ["<","${workspaceFolder}/input.txt"],//rootディレクトリのinput.txtを標準入力として受け取る記述
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",//task.jsonで呼び出したい機能
            "miDebuggerPath": "/usr/bin/gdb",//デバッガの場所を指定する
            "logging": {
                "trace": true,
                "traceResponse": true,
                "engineLogging": true
            }
        }
    ]
}
tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",//launch.jsonに呼び出されるときの名前
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${workspaceFolder}/a.out"
            ],//ターミナルで実行されるコマンド
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?