概要
忘れないうちにメモメモ。
最近、ちょっとVSCodeちゃんと使おうと思って、Goのプログラムをデバッグしてみたりしてたのですが 標準入力を受けて、動作するプログラムをデバッグ実行してみたところ、デバッグ起動はするのですが どこからも入力を入れることが出来ませんでした。
nodeとかだと、launch.jsonに externalConsole
みたいなのを指定すると出来た記憶。
ですが、Goの場合は externalConsole
を書くと validation で引っかかってエラーになります。つまり、externalConsole
はサポートされていない。
んで、情報を調べると以下を発見。
この issue 、作られたのが 2016年で、2019年までアクティブな状態だった模様。
ここを見ると、みんなサポートしてよーって言ってるのですが、デバッガのdelve自体がそもそも標準入力をサポートしていないっぽい。
https://github.com/microsoft/vscode-go/issues/219#issuecomment-530933960
んで、最終的に無理ってなってるみたいですねー。
一応、delve を headless でサーバ起動しておいて、そこにリモートデバッグしに行くとうまくいくみたいです。
https://github.com/microsoft/vscode-go/issues/219#issuecomment-449621513
ちょっと面倒ですね・・・正直。
Delve本体の方でも以下のissueがありました。
この中で use Delve's DAP implementation
って書かれていて、それが以下。
DAPってDebugger Adapter Protocol の略なんですね。
そういえば、VSCode で デバッグ起動する際に Go
と Go (dap)
って2つ出ていたような記憶。試していないですが。
で、自分の場合
いろいろ調べましたが、私の場合はサンプルを実行するプログラムがいて、そいつが標準入力をもらってサンプル探してきて実行するような作りにしていますので、標準入力は欲しい。
ですが、別にサンプル名だけわかればいいので、割り切って vscode
ってオプション作って、そのオプション付与されているときはアプリと同じ場所に .target
ってファイルを置いておいて、そこを読み込んで実行するって形にしました。
予め、launch.json の方には vscode
オプションを渡して起動するようにしておけばオッケイ。標準入力を使わないようにしたので、普通にVSCodeとかGitpod (theia) 上でデバッグ出来るようになりました。古典的な方法ですが、自分の勉強用リポジトリなので、とりあえずヨシ。
参考情報
おすすめ書籍
自分が読んだGo関連の本で、いい本って感じたものです。
- 作者:Katherine Cox-Buday
- 発売日: 2018/10/26
- メディア: 単行本(ソフトカバー)
- 作者:松尾 愛賀
- 発売日: 2016/04/15
- メディア: 単行本(ソフトカバー)
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者:Alan A.A. Donovan,Brian W. Kernighan
- 発売日: 2016/06/20
- メディア: 単行本(ソフトカバー)
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場