ブレークポイントおよび監視ポイントの使用

ブレークポイント

ブレークポイントは、アプリケーションの実行が一時停止するコード行、プログラム、またはメソッドを示します。アプリケーションが一時停止したら、その特定のステップでデータ項目の値を確認および変更することができます。

Eclipse におけるブレークポイントは (他の Micro Focus 製品とは異なり) プログラムではなくソース ファイルに設定されます。つまり、ソース ファイルを複数のプログラムで使用している場合や同じプログラムで複数回使用している場合は、実際には単一のブレークポイントが何度も検出されることになります。

たとえば、次のプログラム Main.cbl について考えてみましょう。

Procedure division.
       Copy "Code.cpy".
       …
       Copy "Code.cpy".

コピーブック Code.cpy には、次のコードがあります。

       Add 1 to count		// set breakpoint here

デバッグの開始前にブレークポイントが設定されている場合や、コピーブックを使用するプログラムがアクティブになっていない場合は、ブレークポイントが保留されます。つまり、そのブレークポイントは実際のコード位置に解決されていません。デバッグが開始されるか、新しいプログラムが呼び出されると、デバッガーは保留中のすべてのブレークポイントを解決して実際のコード位置にバインドしようとします。

上記の例では、メインの実行可能ファイルがデバッガーによってロードされると、デバッガーは単一の (保留中の) ブレークポイントを 2 つの実際の (バインドされた) ブレークポイントにバインドします。それらのブレークポイントは、プラス記号付きのブレークポイント アイコン でエディターの余白および [Breakpoints] ビューの両方に表示されます。

監視ポイント

監視ポイントは、JVM COBOL アプリケーションではサポートされていません。

監視ポイントは、監視するデータ項目に関連付けられたメモリ領域を示すタイプのブレークポイントであり、そのメモリが更新されるとアプリケーションを一時停止します。このようなタイプのブレークポイントは、特定のコード行にではなく、データ項目に設定されます。

ブレークポイントおよび監視ポイントの設定

次のいずれかの方法で、ブレークポイントおよび監視ポイントを設定できます。

  • 実行可能ソース コードの行の左にあるマーカー バー (ブレークポイントの場合)、または作業場所項目の左にあるマーカー バー (監視ポイントの場合) をダブルクリックします。
  • マーカー バーを右クリックし、コンテキスト メニューから [Toggle Breakpoint] または [Toggle Watchpoint] を選択します。
  • [Outline] ビューで段落名、セクション名、またはデータ項目名を右クリックし、コンテキスト メニューから [Toggle Breakpoint] または [Toggle Watchpoint] を選択します。

    Procedure Division の見出しで上記のいずれかの方法を実行すると、プログラム ブレークポイントを作成できます。同様に、method-id の見出しで実行すると (COBOL JVM のみ)、メソッド ブレークポイントを作成できます。これらのタイプのブレークポイントに到達すると、ヘッダーに続く最初の有効な行で実行が停止します。

    エディターが開いていない場合でも、一部のブレークポイントを作成できます。ワークスペースで任意のプログラムのプログラム ブレークポイントを作成できます。これを行うには、[Run > Add Program Breakpoint] をクリックするか、[Breakpoints] ビューの アイコンをクリックして、ファイルの名前を入力します。

ブレークポイントが設定されている場合は アイコンが、監視ポイントが設定されている場合は アイコンがマーカー バーに表示されます。デバッガーに現在アタッチされているプログラムにブレークポイントまたは監視ポイントがバインドされると、これらのアイコンにチェック マークが付きます。プログラム ブレークポイントは、 アイコンで示されます。

警告: ワークスペース内に同じ名前のプログラムが複数ある場合、そのいずれかにブレークポイントを設定すると、デバッグ時にその他のプログラムが中断する可能性があります (対応する行がデバッグ可能な場合)。この動作を防ぐには、[Ignore breakpoints in resources within unrelated projects] ([Window > Preferences > Micro Focus > Debug] から利用可能) を選択します。これにより、現在のプロジェクト (およびその依存関係) に含まれない同じ名前のプログラムに設定されたブレークポイントは無視されます。

ブレークポイントまたは監視ポイントのプロパティへのアクセス

[Breakpoints] ビューには、アクティブな状態か休止状態かを問わず、ワークスペース内のすべてのブレークポイントおよび監視ポイントのリストが表示されます。それぞれのプロパティを表示するには、エントリを右クリックし、[Breakpoint Properties] を選択します。これにより、[Properties...] ダイアログ ボックスが開き、そのブレークポイントまたは監視ポイントの詳細が表示され、必要に応じてその動作を構成できます。

条件の設定

両方のタイプのブレークポイントに条件を追加できます。条件はヒット カウントになります。たとえば、プログラムの 15 行目が条件付きブレークポイントで、hit count > 2 に設定されると、その行の 3 回目の実行が行われようとした場合にのみ、実行が中断されます。リバース デバッグを行っている場合、後方に進めてもヒット カウントは増加します。

ネイティブ COBOL コードでは、条件はコード化された式にすることもできます。たとえば、my-variable に設定された条件付き監視ポイントで、式を my-variable > your-variable とすると、my-variable のメモリが更新されて my-variable の値が your-variable より大きかった場合にのみ、実行が中断されます。両方のタイプの条件を組み合わせることもできます。実行を中断するには両方の条件が満たされる必要があります。

条件付きのブレークポイントおよび監視ポイントの設定」を参照してください。