環境
元の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}は現在作業中フォルダのルートディレクトリという意味
設定ファイル
{
"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
}
}
]
}
{
"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"]
}
]
}