質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

3回答

1104閲覧

vscode golang: 外部ターミナルで実行したい。

tichipaso

総合スコア9

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2019/10/30 09:00

質問

実行時、外部ターミナルで実行したい。
(コンソールからの入力プログラムなど)

環境

os:Linux Mint 18.3 Sylvia 64ビット (MATE 1.18.0)

go:v1.8.0 linux/amd64
$GOROOT=$HOME/go
$GOPATH=$HOME/.go
$PATH=$GOROOT/bin

Visual Studio Code:v1.39.2
Go拡張機能:0.11.7

ファイル->基本設定->設定->機能->ターミナル
Explorer Kind:external

###launch.json

{ "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "auto", "program": "${fileDirname}", "env": {}, "args": [], //"console": "externalTerminal", <-consoleプロパティがない } ] }

プログラム例

func main() { var key string print("input? ") fmt.Scan(&key) println(key) }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2019/10/30 09:58

実行したいのはわかりますが、何が問題でできないのか、こちらに伝わりません。 何が問題なのですか?
guest

回答3

0

ベストアンサー

まず先に以下のコマンドで予めデバッグサーバーを起動しましょう(メインパッケージのフォルダにて)

sh

1> dlv --headless --listen=:2345 --api-version=2 debug .

以下の3つの値をlaunch.jsonに加えます。

  • "mode": "remote",
  • "port": 2345,
  • "host": "127.0.0.1",

最終的には以下のようになります

jsonc

1{ 2 // Use IntelliSense to learn about possible attributes. 3 // Hover to view descriptions of existing attributes. 4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "name": "Launch", 9 "type": "go", 10 "request": "launch", 11 "program": "${fileDirname}", 12 "mode": "remote", 13 "port": 2345, 14 "host": "127.0.0.1", 15 "env": {}, 16 "args": [], 17 } 18 ] 19}

この状態でデバッグを開始することで、先に起動したサーバー側で標準入力が入力可能になります。

投稿2019/10/31 10:31

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tichipaso

2019/11/01 03:03

解決しました。 いろいろとありがとうございました。 警告が出たので、以下の様にしました。 { "version": "0.2.0", "configurations": [ { "name": "Attach",   <- "type": "go", "request": "attach", <- "mode": "remote", "port": 2345, "host": "127.0.0.1", } ] } vscodeのgo言語は、結構複雑なやり方ですね。
guest

0

回答ありがとうございます。

この方法では、デバッグはできないのですか?
(VS Codeのデバッグコンソールは出力専用で入力はできない)

入力するプログラムは、どのようにデバッグするのですか?
(c#やPythonでは可能なのに...)

投稿2019/10/31 02:59

tichipaso

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobonobo

2019/10/31 04:41

「実行時、外部ターミナルで実行したい。 (コンソールからの入力プログラムなど)」という質問ではなかったのでしょうか? 「入力するプログラムは、どのようにデバッグするのですか?」はまた調べておきます。
tichipaso

2019/10/31 05:22

質問が、回りくどくて申し訳ありませんでした。 要は、 "入力するプログラムは、どのようにデバッグするのですか?" です。
guest

0

launch.jsonを利用するdebugモードは裏で結構複雑なことをしています。
単純に外部ターミナルに持っていくことは難しいです。

お題の用途であればタスクを定義しましょう。

  • コマンド: Tasks: Configure Task
  • テンプレートにOthersを選ぶ
  • 以下の設定を記入(labelとcommandを編集)

jsonc

1{ 2 // See https://go.microsoft.com/fwlink/?LinkId=733558 3 // for the documentation about the tasks.json format 4 "version": "2.0.0", 5 "tasks": [ 6 { 7 "label": "run", 8 "type": "shell", 9 "command": "go run ." 10 } 11 ] 12}

(上記の「go run .」はGo1.1x以降の書き方でした。ドットの代わりにメインパッケージソースを列挙してください)

実行は以下の手順で。

  • コマンド: Tasks: Run Task
  • 「run」をチョイス
  • Continue...を選択

これでVSCodeのTerminalペインで実行できます。
全くの別のターミナルウインドウを開く場合はお使いのOSのターミナルを開く方法を調査してみてください。
(Linuxはデスクトップマネージャごとに異なります)

投稿2019/10/30 10:00

編集2019/10/30 10:02
nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問