タイトルはそれをかなり要約しています。Goを試していますが、インタラクティブな環境内でブレークポイントを設定したり、ステップイン/オーバー/アウトしたりすることができません。gdbを使用してGoをデバッグできることは知っていますが、ブレークポイント用にgdbにプラグインできるIDEを使用する場合と比較すると、非常に面倒です。
1つを検索しようとしましたが、構文が強調表示されているがデバッグが行われていないプラグインまたは小さなIDEしか見つかりませんでした。
タイトルはそれをかなり要約しています。Goを試していますが、インタラクティブな環境内でブレークポイントを設定したり、ステップイン/オーバー/アウトしたりすることができません。gdbを使用してGoをデバッグできることは知っていますが、ブレークポイント用にgdbにプラグインできるIDEを使用する場合と比較すると、非常に面倒です。
1つを検索しようとしましたが、構文が強調表示されているがデバッグが行われていないプラグインまたは小さなIDEしか見つかりませんでした。
回答:
更新:個人的には、GDBは機能しますが、Goで使用するのは好きではないので、血を吐くようになります。良い代替案については、他のいくつかの回答を確認してください。
はい、もちろん :)
Goにはデバッガー(GDB)があります
これがその使い方の公式チュートリアルです。
「グラフィカルデバッグ」(つまり、エディターでブレークポイントを設定する)が必要な場合、一部のIDEでは(バックグラウンドでGDBを使用して)それを実行できます。
具体的には、Eclipse、LiteIDE、Zeusはすべて、コーディング環境(ソース)からブレークポイントを設定してデバッグすることができます。Zeusでそれを行う方法に関するビデオがあります。
godebug
たが、前回行ったときはかなり良かったです。
goのGDBサポートには、goチームによって修正されない多くの問題があります。
詳細については、RobPikeによる投稿を参照してください。
サポートされているプラットフォームで基本的なgdb機能(スタックトレース、値の出力)が機能するように努めますが、デバッガーを使用してGoプログラムの完全な環境を理解する機能は機能しない可能性が高く、gdbサポートの改善はチームの優先事項ではありません。 。
彼らは他のデバッグオプションを探していますが、今のところ具体的な計画はありません。ドキュメントは古く、runtime-gdb.py
go 1.2に付属のスクリプトは、python3サポートでコンパイルされたGDB(現在のUbuntuなど)では機能しません。
2017年の更新:以下に記載されているgodebugプロジェクトは、正式にderekparker / delveに置き換えられました。
元の答え:
これで(2015年3月)、コードのインストルメンテーションに基づいた別のアプローチがあります。
godebug
ソースコード生成を使用して、デバッグ呼び出しでプログラムをインストルメント化します。
go tool cover
コードカバレッジに対して同様のアプローチを取ります。
- を実行すると
godebug
、プログラム、インストルメント関数呼び出し、変数宣言、およびステートメント行が解析され、結果のコードがどこかに出力されます(現在はstdoutまたは元のファイルの代わりに配置されています)。- この変更されたコードを実行するとき、どこかにブレークポイントを置いたと仮定して、それをステップスルーして変数を検査できます。
後で来る:任意のGo式を評価し、変数に書き込みます。
2015年6月の更新:
「一部」が期待するほどインタラクティブではないかもしれませんが、それでも評価されます(そして「ステップイン」機能があります)。
「Goにはデバッガーがあり、それは素晴らしいです!」(Cloudfare)を参照してください。
ここにクールな点があります:
ptrace
移植性のない半ダースの異なるインターフェースと格闘する代わりにgodebug
、ソースコードを書き直し、godebug.Line
すべての行、godebug.Declare
すべての変数宣言、およびgodebug.SetTrace
ブレークポイント(つまり、入力する場所_ = "breakpoint"
)のように関数呼び出しを挿入します。このソリューションは素晴らしいと思います。
それから得られるのは、(おそらくクロスコンパイルされた)デバッグ対応のバイナリであり、通常のバイナリの場合と同じようにステージングサーバーにドロップできます。ブレークポイントに達すると、プログラムはインラインで停止し、stdinで待機します。
私たちがデバッグに適用するのが大好きなのは、Goの単一バイナリで依存関係のない哲学です。サーバー上のツールや権限を必要とせずに、どこでもビルドし、どこでも実行できます。
ifdef GODEBUG
GOPATH="${PWD}" go install github.com/mailgun/godebug
GOPATH="${PWD}" ./bin/godebug build -instrument "${GODEBUG}" -o bin/rrdns rrdns
デバッグはすぐ
make bin/rrdns GODEBUG=rrdns/...
そこにあります。
更新:
私はそれをチェックアウトし、バージョン:2016.1.3、ビルド:145.1617.8、リリース:2016年6月5日がDelveで動作することを報告できてうれしいです!ここからダウンロードできます:https://www.jetbrains.com/idea/download/。こちらのDelveインストール手順にも従ってください:https://github.com/derekparker/delve/tree/master/Documentation/installation
少し不安定です。OSXログインプロンプトを受け取った直後に、インタラクティブデバッグが機能し始めました。時々、単純な.goプログラムをデバッグしてキックスタートする必要があります。しかし、それは機能し、私が見た中でGoにとって最高のインタラクティブなデバッグ体験です。
元の投稿:
golangインタラクティブデバッガーはありますか?はい。
使用する価値のあるgolangインタラクティブデバッガーはありますか?番号。
MacでGDBを構成するのは面倒ですが、実行可能です。
ただし、使い始めるとすぐに、インストールに時間を浪費していることに気付くでしょう。
IntelliJを使用するように構成することもできます。
IntelliJ、LiteIDE、CGDBなどが提供していると思われる唯一の価値は、GoのGDBデバッグサポートが非常に貧弱であることをより迅速に確認できることです。
これを使用していくつかのGoコードをステップ実行できますが、非常に単純な変数値以外の値を出力しようとすると、まともなデバッガーを望んで時間を無駄にすることになります。
CGDBを使用してmap [string] stringデータ構造の値を出力しようとするとどうなるかの例を次に示します。
(gdb) print params
$1 = (github.com/go-martini/martini.Params) 0x15582 <runtime.reentersyscall+450>
...これは完全に役に立たない。
次に、これを試してください:
(gdb) print params["UserID"]
...そして「バスエラー」が発生します。
Delve(https://github.com/derekparker/delve)はGoで記述されているため、有望に見えますが、IDEではなくコンソールを使用して駆動します。
Goでのインタラクティブなデバッグをサポートするまともな仕事をしたIntelliJ(または他のIDE)のエンタープライズバージョンに喜んでお金を払います。
今のfmt.Printf("%v", variable)
ところ、それが得るのとほぼ同じくらい良いです。
編集
GOデバッガーはIntelliJまたはPyCharmのシンプルなプラグインになり、他に何もインストールする必要はありません。プラグイン設定でGoプラグインを探すだけです。
元の回答(2015年11月)
2015年11月末現在の最新情報をお探しの方へ:
掘り下げる
https://github.com/derekparker/delve
ビルド/セットアップの手順に従います。
https://github.com/derekparker/delve/wiki/Building
最新のIntelliJ(15)またはPyCharm(5)を入手する
https://www.jetbrains.com/idea/download/
選択したIDEでgo-lang-pluginを入手します。
Pycharm -> Preference -> plugins -> search for go
current version is Version: 0.10.749
IntelliJ -> Preference -> plugins -> search for go
current version is Version: 0.10.749
実行するパッケージまたはファイルを定義します。
セットアップが完了すると、再生アイコンとデバッグアイコンがアクティブになり、通常どおりブレークポイントやウォッチなどを設定できます。
乾杯
私は、GDBの小さなcursesラッパーであるCGDBを喜んで使用しています。
外出先でのIDEデバッグは可能です(再び)、実際に機能します!
DelveはMacOS Xでかなりうまく機能し、IntelliJ IDEA GoLangプラグインでサポートされています。
Mac OSX、IntelliJ Idea 14、Go 1.5.1、Delve0.5でテストしました
自己署名証明書を作成したり、システムリングに追加したりするという通常のループを実行する必要がありました(Mac OS Xでデバッガーを実行するために必要です)。最後に、IntelliJ内にGOプロジェクトを設定し、通常のIDE +デバッガー機能(ブレークポイントの設定、変数の検査、シングルステップ)を取り戻すことで返済されました。
これは、コードをデバッグするために値を出力するよりもはるかに優れています。
オプション1-GDBhttps ://golang.org/doc/gdb
Visual Studioのコードのと、外出先プラグイン(まだ掘り下げを使用しています)。
私は個人的にオプション3を使用します。そのためには、delveをインストールする必要があります。
このビデオは、実際のデバッグを示しています:https://youtu.be/uBjoTxosSys?t = 16m11s(ビデオ全体が非常に興味深いです)。
基本的にGoをサポートするIntellijであるGogland(https://www.jetbrains.com/go/)にはかなり満足しています。彼らがこれを開発しているので、それはより良くなり続ける実用的なデバッガーを持っています。2017年1月から使用していますが、2016MBPではほぼ安定しています。
Golandは、Go開発に人間工学的環境を提供することを目的としたJetBrainsによる新しい商用IDEのコードネームです。