Go言語、Visual Studio Code でのデバッグ方法を調べる
Windows を使っているとする
👇 とりあえずググって適当に記事を読む。大筋で、以下の記事の通りやるとできる
とりあえず真似する
Step [O1o0] はじめに
Step [O1o1o0] エディター
Visual studio code を使っているとする
Step [O1o2o0] プログラム言語
Go 言語をインストール済みとする
Step [O1o3o0] Go エクステンションを入れる
Step [O1o4o0] 関連するツールをインストールする
[Ctrl] + [Shift] + [P]
をキーにする
Go: Install/Update Tools
を選ぶ
出てくるツールを全部選んでインストールする
Output:
All tools successfully installed. You are ready to Go. :)
このとき、 dlv
もインストールしたものとする
Step [O2o0] デバッガーを使用する
Step [O2o1o0] 設定ファイルの作成
VSCodeのツールバーの 虫みたいなアイコンをクリック
create a launch.json file
をクリック
VSCode の上の方にフォルダー名か出てくるので、とりあえず ソースを置いているフォルダーを選ぶ
👇 以下のファイルが自動生成される
📂 .vscode
└── 📄 launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}"
}
]
}
Step [O2o2o0] デバッグの実行
ブレークポイントを置く
エントリーポイント(main関数)が書いている *.go
ファイルを開く
F5
キーを押すとデバッグが開始される
Step [O3o0] 標準入力の差し替え
dlv では、以下のコードを実行できない
var scanner = bufio.NewScanner(os.Stdin)
for scanner.Scan() {
// ...略...
}
delveは標準入力を受け付けられない
という致命的な不便がある
👇 アタッチするといいらしい
📖 標準入力のあるプログラムを delve でデバッグしたい
👇 アタッチしないなら
そこで、 標準入出力と、ファイル入出力をラッピングした VirtualIO
を作ることにし、
標準入出力は直接使わず VirtualIO
を使うようにし、
標準入出力と、ファイル入出力を 切り替えられるようにする。
入力したいコマンドは、ファイルへ書き込むことにする
👇 以下を参照
📖 muzudho / go-virtual-io / docs / how_to_make.md
Step [O4o0] デバッグ実行でコマンドライン引数を渡すには
C++の記事だが参考にする
👇 以下を参照
📖 https://code.visualstudio.com/docs/cpp/launch-json-reference
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": ["arg1", "arg2"],
"environment": [{ "name": "config", "value": "Debug" }],
"cwd": "${workspaceFolder}"
}
args
という項目を追加できそうだ
参考にした記事
デバッグ環境
デバッグと標準入力
📖 scanner.Scan() hangs in GoLand debugger
📖 golangのAtCoder向けデバック方法(VSCode)
📖 Goでスリープしようとしてハマった
EOF