GoLand 2020.3 ヘルプ

中断されたプログラムを調べる

デバッガーセッションの開始後、デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。

その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりできます。

フレームを調べる

プログラムの状態はフレームで表されます。プログラムが一時停止すると、現在のフレームスタックがデバッグツールウィンドウのフレームタブに表示されます。

Frames tab

フレームはアクティブなメソッドまたは関数呼び出しに対応します。呼び出されたメソッドまたは関数のローカル変数、その引数、式の評価を可能にするコードコンテキストを格納します。

フレームの概念をよりよく理解するために、プログラムが実行されたときに何が起こるかを見てみましょう。プログラムの実行は main メソッドから開始され、次に main メソッドが他のメソッドを呼び出します。これらの各メソッドは、より多くのメソッド呼び出しを行う場合があります。各メソッド呼び出しのローカル変数とパラメーターのセットはフレームで表されます。メソッドが呼び出されるたびに、新しいフレームがスタックの一番上に追加されます。メソッドの実行が完了すると、対応するフレームがスタックから削除されます(後入れ先出し方式)。

フレームを調べることで、特定のパラメーターがメソッドに渡された理由と、呼び出し時の呼び出し元の状態を理解できます。

スタックをクリップボードにコピー

  • 現在のスレッドのコールスタックをコピーするには、フレームタブの任意の場所を右クリックして、スタックをコピーを選択します。

ダンプタブでゴルーチンのリストをフィルタリングする

プログラムが使用するすべてのゴルーチンのダンプを作成し、特定のゴルーチンを検索するフィルターを適用して、フィルター処理された結果を調べることができます。この手順は、プログラムまたはその一部がどのように機能するかをよりよく理解できます。

例: 次のスクリーンショットは、Goroutine 7 main.pageSize の実行スタックを示しています。goroutines リストのゴルーチン名は 'Goroutine <ID> <last_non-runtime_function_on_the_stack> です。非ランタイムとは、関数がランタイムパッケージに含まれていないことを意味します。

Execution stack of Goroutine 7 main.pageSize

ゴルーチンをダンプする

  • デバッグセッション中に、ダンプゴルーチンボタン( the Dump Goroutines button )をクリックします。

    利用可能なゴルーチンとそのスタックのダンプが別のタブで開きます。

    Dump goroutines

ダンプ結果をフィルタリングする

  • フィルターアイコン( the Filter icon )をクリックします。フィルターフィールドに、検索する文字列を入力します。

    Filter icon
  • リストから除外するゴルーチンを右クリックして、ゴルーチンを隠すを選択します。選択したゴルーチンと同じスタックを持つすべてのゴルーチンを非表示にするには、コンテキストメニューから同じスタックでゴルーチンを非表示にするを選択します。

    非表示リストに隠されたゴルーチンを表示できます。

    リストの状態をリセットし、表示リスト内のすべての非表示のゴルーチンを再度作成するには、隠しゴルーチンをリセットするボタン( the Reset Hidden Goroutines button )をクリックします。

    Hide goroutine

ダンプ結果をテキストファイルにエクスポートする

  1. テキストファイルにエクスポートアイコン( the Export to Text File icon )をクリックします。

  2. ファイルにエクスポートフィールドで、ストレージパスを選択し、保存をクリックします。

Export dump results into a text file

変数の調査 / 更新

変数タブには、選択したフレーム / スレッドの変数のリストが表示されます。変数の検査は、プログラムが特定の方法で動作する理由を理解できます。

The Variables tab shows you the variables visible from the current execution point

各変数の左側のアイコンは、その型を示しています。

変数型

アイコン 説明
Static members 囲む型の静的メンバー
A field オブジェクトのフィールド (静的および非静的の両方)
A field containing a self-reference 自己参照オブジェクトを含むフィールド (たとえば、フィールドが初期化される前の Throwablecause )
A final field 最終フィールド
A static field static フィールド
A thrown exception スローされた例外 ( 例外ブレークポイントにヒットしたときにのみ表示されます)
A method return value メソッドの戻り値 ( メソッド戻り値の表示オプションが有効な場合にのみ表示)
A parameter メソッドパラメーター
An enum constant 列挙型定数
An array ローカル配列
A primitive ローカルプリミティブ型
A watch 監視と自動変数。
A primitive ローカル参照変数

変数のコピー

変数を調べるとき、変数名または値をコピーして、別の場所に貼り付けたり、別の変数と比較したりする必要がある場合があります。

  • 変数が保持する値をコピーするには、変数を右クリックして値をコピー Ctrl+C を選択します。

  • 変数の名前をコピーするには、変数を右クリックして名前をコピーを選択します。

変数をクリップボードと比較する

変数値を他の値と比較する必要がある場合は、クリップボードと値を比較オプションを使用します。これは、たとえば変数が長い文字列を保持していて、別の長い文字列と比較する必要がある場合に役立ちます。

  1. 比較するコンテンツをコピーします(たとえば、テキストファイルから)。

    RSA key in a text editor
  2. 変数タブで、比較する変数を右クリックし、クリップボードと値を比較を選択します。

  3. 開く差分ビューアーの違いを調べます。差分ビューアーを効率的に使用する方法の詳細については、ファイルとフォルダーの比較トピックを参照してください。

    Clipboard vs Selected dialog

専用の変数を表示するダイアログ

GoLand を使用すると、専用ダイアログで変数をインスペクションできます。これは、変数(またはその参照が保持するオブジェクト)を追跡する必要があり、同時にフレームとゴルーチン間を移動できる必要がある場合に役立ちます。

  • 変数タブで変数を右クリックし、インスペクションを選択します。

    Inspect dialog

変数を配列として表示

  1. デバッグツールウィンドウの変数タブで、配列またはデータフレームを選択します。

  2. 右側のリンク配列として表示 / データフレームとして表示をクリックします。

    あるいは、コンテキストメニューから配列として表示またはデータフレームとして表示を選択することもできます。

    データビューツールウィンドウが表示されます。

    View array or data frame

変数値を設定

特定の条件でプログラムがどのように動作するかをテストする必要がある場合、または実行時の現在の動作を修正する必要がある場合は、変数値を設定 / 変更することでそれを実行できます。

  1. 変数タブで変数を右クリックして値の設定を選択するか、変数を選択して F2 を押します。

  2. 変数の値を入力し、Enter を押します。

    Enter new value for the variable in the field right next to its name

または、インラインヒントポップアップを使用して変数値を設定することもできます。目的の変数に対応するヒントをクリックし、必要に応じてツリーを展開して、値の設定を選択します。

Inline hint menu

変数または型が宣言されているソースコードを調べる必要がある場合は、変数タブから直接移動できます。

  • 変数が宣言されているコードに移動するには、変数を右クリックしてソースに移動 F4 を選択します。

    Jump to Source takes you to the place where the variable is declared
  • 変数型の型宣言に移動するには、変数を右クリックして型ソースに移動 Shift+F4 を選択します。

    Jump to Type Source takes you to the place where the type of the variable is defined

式の評価

GoLand を使用すると、デバッグセッション中に式を評価して、プログラムの状態に関する追加の詳細を取得したり、実行時にさまざまなシナリオをテストしたりできます。

エディターで簡単な式を評価する

式を評価する最も簡単な方法は、コード内で式を指すことです。これは最も簡単な方法ですが、メソッド呼び出しの評価には使用できません。これらは副作用を引き起こす可能性があるため、安全のために行われます。

このオプションは、エディターから式をすばやく評価する必要がある場合に使用します。

  1. 評価する式をポイントします。式の結果がツールチップに表示されます。

    Value tooltip
  2. 結果のオブジェクトの子要素を表示する必要がある場合は、the Expand button をクリックするか、Ctrl+F1 を押します。

    Resulting objects are represented by trees. This helps you view their internal state

価値のあるツールチップが邪魔になる場合は、遅延を増やすか、完全に無効にすることができます。これを行うには、設定 / 環境設定ダイアログ Ctrl+Alt+Sビルド、実行、デプロイ | デバッガー | データビューに移動し、必要に応じて値ツールチップを表示および値ツールチップの遅延オプションを設定します。

エディターで複雑な式を評価する

メソッド呼び出しを伴うコード内の式を評価したい場合、または式のどの部分を評価するかについて特定したい場合は、式のクイック評価オプションを使用します。

このオプションは、プログラムがブレークポイントに達した後に中断された場合にのみ使用可能です(手動で一時停止されません)。

  1. 式にキャレットを配置する(最も近い一致式を評価する)か、その一部を選択します(複雑な式のどの部分を評価するかを特定したい場合)。

  2. 実行 | デバッグアクション | 式のクイック評価 Ctrl+Alt+F8 をクリックします。または、Alt を押しながら選択をクリックします。

    Value tooltip appears

クイック評価を構成して、コードを選択するだけで(メニュー / ショートカットを使用せずに)コードで機能するようにできます。このオプションを有効にすると、誤ってメソッドを呼び出す可能性があるため、慎重に使用してください。

コード選択でクイック評価を構成するには、設定 / 環境設定 | ビルド、実行、デプロイ | デバッガー | データビューに移動し、コード選択時に値ツールチップを表示するオプションを優先として設定します。

任意の式を評価する

任意の式の評価は、最も柔軟な評価オプションです。現在のフレームのコンテキスト内にある限り、任意のコードを評価できます。これを使用して、宣言、メソッド呼び出し、ループ、匿名型、ラムダなどを評価できます。

この機能を使用して、プログラムの現在の状態に関する追加情報を取得し、すべて同じデバッグセッション内でさまざまなシナリオをテストします。これにより、実行する必要のあるセッションの数が減るため、時間を大幅に節約できます。

このオプションは、プログラムがブレークポイントに達した後に中断された場合にのみ使用可能です(手動で一時停止されません)。

  1. 現在、あなたの前にある式または変数(たとえば、エディターまたは変数タブ)で開始したい場合は、それを選択します。

  2. 実行 | デバッグアクション | 式の評価 Alt+F8 をクリックします。ショートカットは Ubuntu では機能しない可能性があります(正しく動作させるには、ショートカットの設定を調整してください)。

  3. 評価ダイアログで、選択した式を変更するか、フィールドに新しい式を入力します。コードフラグメントを評価する場合は、展開 Shift+Enter をクリックします。

  4. 評価(複数行モードの場合は Ctrl+Enter )をクリックします。式の結果が結果フィールドに表示されます。

    式の結果は、return ステートメントから取得されます。return ステートメントがない場合、結果はコードの最後の行から取得されます(式である必要はありません。リテラルも機能します)。値を取得する有効な行がない場合、結果は undefined です。指定された式を評価できない場合、結果フィールドに理由が示されます。

    Expression result is calculated

評価ダイアログは非モーダルなので、フォーカスをエディターに切り替えて他の変数と式をコピーできます。必要に応じて、複数の評価ダイアログを開くこともできます。

インラインで値を表示

GoLand は、変数の使用箇所のすぐ隣に変数の値を表示することにより、デバッグプロセスを容易にします。

Variable values are displayed at the lines where they are used

変数値が変更されると、インラインビューが新しい値で更新され、色が変更されます。

Inline values of the variables change with each step

インライン値ビューはデフォルトで有効になっています。オフにするには、設定 / 環境設定ダイアログ Ctrl+Alt+Sビルド、実行、デプロイ | デバッガー | データビューに移動し、値をインラインで表示するオプションを無効にします。

インラインウォッチを追加する

ある式の結果を特定の行に表示したい場合は、そのためのインラインウォッチを設定できます。インラインウォッチは永続的であり、セッションの再開後もアクティブなままです。

  1. フィールドを追跡するオブジェクトを参照するインラインヒントをクリックします。

  2. ポップアップで、フィールドを選択し、インラインウォッチとして追加をクリックします。

  3. 必要に応じて監視を微調整します。有効な式をウォッチとして使用できます。

インライン監視を削除するには、監視にカーソルを合わせ、近くの十字をクリックします。

Add an inline watch

ウォッチ式

変数またはより複雑な式の結果を追跡する場合は、この変数または式の監視を設定します。これは、変数のリストに定期的に表示されないものを追加したり、インスタンス変数を固定したりする必要がある場合に役立ちます。各ステップの後にツリーを展開する必要がなくなります。

このオプションは、プログラムがブレークポイントに達した後に中断された場合にのみ使用可能です(手動で一時停止されません)。

ウォッチは、選択したフレームのコンテキストで評価されます。ウォッチは、コンテキストから外れている場合、またはコンパイルに失敗した場合は評価できません。この場合、監視にはエラーアイコン Error icon のマークが付けられます。

デフォルトでは、ウォッチ式タブは非表示になっており、ウォッチは変数タブに表示されます。ウォッチ式タブを非表示 / 表示するには、変数またはウォッチ式タブのウォッチ式を変数タブに表示ボタン Show watches in variables tab を使用します。

監視を追加する

  1. 変数タブで新規ウォッチ式 New Watch button をクリックします。

  2. 評価する変数または式を入力します。式では、メソッドがローカルコンテキストにある限り、メソッド呼び出し、関数リテラル、変数の宣言などを評価できます。

    Watch expression

ウォッチ式に変数 / 式を追加した後、変数 / 式はそこに残り、各ステップで評価され、現在のコンテキストで結果を提供します。

ウォッチを編集する

  • 目的の監視を右クリックして、編集を選択します。

監視をコピーする

  1. コピーする監視を選択します。

  2. 変数 / ウォッチ式タブのウォッチ式の複製 Duplicate Watch button をクリックするか、Ctrl+D を押します。

監視の順序を変更する

便宜上、監視が変数 / ウォッチ式タブに表示される順序を変更できます。

  • 変数 / ウォッチ式タブまたは Ctrl+Up および Ctrl+Down キーボードショートカットのウォッチ式を上に移動 / ウォッチ式を下に移動ボタンを使用します。

監視を削除する

  • 単一の監視を削除するには、監視を右クリックして、変数 / ウォッチ式タブでウォッチ式の除去 Delete を選択します。

  • すべてのウォッチを削除するには、変数 / ウォッチ式タブの任意の場所を右クリックして、すべてのウォッチ式を除去を選択します。

ウォッチは、変数と同じアクションを可能にします。例: 専用のダイアログボックスで表示するか、ソースコード移動するために使用できます。

ウォッチはプロジェクトの一部です。これは、デバッグセッションを失うリスクなしに、デバッグセッションを停止して再実行できることを意味します。

現在の実行ポイントに戻る

プログラムの状態を調べるには、コード内を移動する必要があり、多くの場合、プログラムが中断されている場所に戻る必要があります。

以下のいずれか 1 つを実行します:

  • メインメニューから実行 | デバッグアクション | 実行ポイントの表示を選択します。

  • Alt+F10 を押します。

  • デバッグツールウィンドウのステップツールバーで The Show Execution Point button をクリックします。

現在の実行ポイントは青い線で示されます。この行のコードはまだ実行されていません。

Blue line indicating the current execution point

関連ページ:

デバッガーセッションを開始する

デバッガーセッションの開始は、通常モードでのプログラムと非常に似ています。デバッガーはバックグラウンドで接続されているため、デバッガーセッションを開始するために特別な設定を行う必要はありません。GoLand からプログラムを実行できる場合は、同じ構成を使用してプログラムをデバッグすることもできます。このトピックは、実行 / デバッグ構成の理解に依存しています。GoLand は追加のセットアップなしで単純なアプリケーションをデバッグする方法を提供しますが、デバッガーを効率的に使用するには実行 /...

デバッグツールウィンドウ

このツールウィンドウは、デバッグを開始すると使用可能になります。アプリケーションのデバッグセッションによって生成された出力を表示します。複数の実行 / デバッグ構成をデバッグする場合、各構成の出力は、対応する構成にちなんで名付けられた個別のタブに表示されます。各構成には、次のネストされたタブがありま

ブレークポイント

ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、単純な場合(たとえば、コード行に到達したときにプログラムを一時停止する場合)や、より複雑なロジック(追加の条件に対するチェック、ログメッセージの書き込みなど)を伴う場合があります。一度設定すると、ブレークポイントは、一時的なブレークポイントを除いて、明示的に削除するまでプロジェクトに残ります)。ブレークポイントを持つファイルが外部で変...

ファイル、フォルダー、テキストソースを比較する

GoLand を使用すると、ファイル、フォルダー、テキストソース、またはデータベースオブジェクト間の違い、およびローカルファイルとそれらのリポジトリバージョン間の違いを確認できます。ファイルの比較:GoLand はファイルの差分ビューアーに差分を表示します: 変更を適用するには、シェブロンボタンおよびを使用します。変更を追加するには、を押します。ボタンはに変わります。

変数

変数ペインでは、アプリケーションのオブジェクトに格納されている値を調べることができます。フレームペインでスタックフレームが選択されると、変数ペインはそのスコープ内のすべてのデータ(メソッドパラメーター、ローカルおよびインスタンス変数)を表示します。このペインでは、オブジェクトのラベルを設定したり、オブジェクトをインスペクションしたり、式を評価したり、変数を監視に追加したりすることができます。ツールバー:このツールバーは、監視ペインが非表示になっている場合にのみ表示され、設定されたウォッチが変数

キーボードショートカット

GoLand 標準のキーボードショートカット PDF は、公式ショートカット一覧 PDF 日本語版から入手できます。ローカルに保存しておいて活用しましょう。GoLand には定義済みのキーマップがいくつか含まれており、頻繁に使用するショートカットをカスタマイズできます。キーマップ構成を表示するには、設定 / 環境設定ダイアログを開き、キーマップを選択します。GoLand は、環境に基づいて事前定義されたキーマップを自動的に提案します。使用している OS と一致することを確認するか、使用している...