タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

golangとデバッグに関するAkinekoのブックマーク (3)

  • コンテナで動くGoアプリをデバッグする方法

    初めに 最近開発環境を整備していて、コンテナでGoアプリケーションをリモートでデバッグするのにちょっと面倒だったので、自分のメモも兼ねてやり方を残しておきます。 要件 プロジェクトによりますが、今の現場では主要エディタがVSCodeです。 もちろんVimユーザー(うち一人はぼく)がいるので、ターミナルでもデバッグできるように対応する必要があります。 また、コード変更を反映させるために都度イメージをビルドしてコンテナを再作成するは開発スピードが落ちるため、コンテナ再起動だけで反映されるようにする必要があります。 デバッガのしくみ Goにはdelveというデバッガがあります。 delveはClient-Serverモデルになっていて、次の2つのプロトコルで通信が可能になります。 JSON-RPC DAP JSON-RPCはdelveのCLIに使われています。 DAPはMicrosoftが策定し

    コンテナで動くGoアプリをデバッグする方法
  • golang でのデバッグに非常に便利な go tool trace - 理系学生日記

    なぜかおかしな振る舞いをするサーバプログラムをデバッグするというのは、それなりに骨の折れる作業です。大量のソースを前に「ここが怪しい」と言いながらデバッグログを埋め込むこともあるでしょう。また、lsof や ss といったコマンドやスタックトレースから見える状況を元に仮説を立てて検証していくこともあるでしょう。 リクエストを受け付けるとなぜか応答を返さないままになってしまう gRPC サーバに対し、ソースから解析をかけていったことがありました。そのときは目の前の対応で必死になってしまいましたが、エントリでは「来はどのようにデバッグを進めるべきだったのか」を考えます。 実験コード mutex の Unlock を忘れたサーバ 同時並行して AcquireLock を呼び出すクライアント trace trace の取得方法 サーバサイド trace の可視化 trace からのデバッグ g

    golang でのデバッグに非常に便利な go tool trace - 理系学生日記
  • Go ランタイムのデバッグをサポートする環境変数 - Qiita

    はじめに Go はシンプルな構文ながら複雑な処理を行えるプログラミング言語です。エラーも自らがハンドリングするスタイルなので割とバグが入り込みにくいのが特徴です。しかし時には Go 体のソースを見ないと動きが確認できない事もあります。とは言えオープンソースだからといって全ての挙動が簡単に探れるものではありません。 コンパイラの動きであったり、ランタイムの動きであったりで良く分からない物があった場合に、ソースを変更して print デバッグする事が良い方法とは言えません。 幸運にも Go ではランタイム、標準パッケージにデバッグのヒントを出せる仕組みが用意されています。GODEBUG や GOGC、GOTRACEBACK という環境変数が用意されており、設定を行う事で挙動を変更できたり色々なデバッグ情報を出力できたりします。 記事ではこれらの環境変数に設定可能な値を、筆者の知見を交えて紹

    Go ランタイムのデバッグをサポートする環境変数 - Qiita
  • 1