デバッグするときに標準入力渡せない問題
普段VSCodeでNimを書いていると、ちょくちょくデバッグしたいな〜となります。そこでNative Debugを入れてGDBでデバッグしていたのですが、標準入力を受け付けてくれない問題がありました(もしかしたら僕が知らないだけで方法があるのかもしれません)。
流石にしんどいのでファイルに入力を記述し、パイプで渡そうと思ったのでその設定メモ。
僕はNimですが、おそらくC/C++あたりでも同じなのではないでしょうか。
settings.jsonに設定を記述
今回はプロジェクトに関わらずグローバルで設定を反映させたかったので、settings.jsonに記述しています。個別に設定したい場合はlaunch.jsonに同様のことを記述すればよいはずです。
以下僕の設定ファイルです。arguments以外は適当にVSCodeでNimのデバッグ(ステップ実行)あたりを参考にして書いてください。
{
...他の設定とか
"launch": {
"configurations": [
{
"name": "Nim Debug",
"type": "gdb",
"request": "launch",
"arguments": "< ${fileBasenameNoExtension}.input",
"target": "${fileBasenameNoExtension}",
"cwd": "${fileDirname}",
"valuesFormatting": "parseText"
}
],
"compounds": []
}
}
こんな感じで、settings.jsonの下の方にlaunch以降を追記してあげます。
この設定では、test.nimがあったらコンパイルによって生成しておいたバイナリtestを実行し、test.inputを標準入力として渡しています。要は"arguments": "< ${fileBasenameNoExtension}.input"の部分で、引数として< [nimファイル名から拡張子を除いた文字列].inputを渡すことで、パイプで入力を渡しているわけですね。
