MPS 2020.3 ヘルプ

MPS デバッガーを使う

デバッグ

MPS デバッガーは、カスタム言語用のデバッガーを作成するための API を提供します。MPS ディストリビューションに含まれている Java デバッガープラグインは、ユーザーが最終的に Base Language/ Java に生成される言語で書かれているプログラムをデバッグすることを可能にします。下記のプラグインを使って MPS デバッガーの機能を説明します。これらはすべて API を介して他の言語でも利用できます。

実行

java アプリケーションをデバッグする方法の説明から始めます。ユーザーが main メソッドを持つクラスを持っている場合は、そのようなプログラムを実行 / デバッグするために Java アプリケーションの実行構成を使用する必要があります。

実行構成のインスタンスの作成

Java アプリケーションまたは MPS インスタンス実行構成は、それぞれメインメソッドまたは MPS プロジェクトを持つクラスに対して作成できます。実行 -> 構成の編集メニューに移動し、下の図に示すように「+」の付いたボタンを押します。

Debug1

メニューが表示されたら、そこから Java アプリケーションを選択すると、新しい Java アプリケーション設定が作成されます。

Debug2

Java アプリケーションを選択した場合は、実行する Java クラスと、いくつかのオプションの構成パラメーターを指定できます。

Debug3

各実行構成に名前を付ける必要があり、メインノード、つまり main メソッドを持つクラスを指定する必要があります。VM とプログラムのパラメーターも設定で指定できます。実行構成の詳細については、実行構成の章を参照してください。

言語定義のデバッグ

MPS 言語定義コードをデバッグしたい場合は、MPS インスタンスを選択してください。MPS はあなたの言語を使うプロジェクトで MPS の新しいインスタンスを開始し(それは現在のプロジェクトかもしれません)、オリジナルの MPS インスタンスでブレークポイントを設定してデバッグします。

デバッグ構成ダイアログで、新しい MPS インスタンスで開く MPS プロジェクト - 現在のプロジェクトを開くチェックボックスをオンにして現在のプロジェクト、または下のフィールドで指定したプロジェクトを指定する必要があります。新しい MPS インスタンスが起動したら、空のままにして、メニューからプロジェクトを作成 / 開くこともできます。

Debug4

設定をデバッグする

実行構成をデバッグするには、設定メニューから実行構成を選択してデバッグボタンを押します。デバッガーが起動し、デバッガーツールウィンドウが下に表示されます。

Debug6

ツールには 2 つのタブがあります。1 つはコンソールビュー用、もう 1 つはデバッガービュー用です。コンソールにアプリケーションの出力が表示されます。

ブレークポイント

次のセクションではブレークポイントの使用箇所について説明します。

ブレークポイントを設定する

ブレークポイントはステートメント、フィールド、または例外に設定できます。ブレークポイントを設定または削除するには、エディター内のノードで Ctrl + F8 キーを押すか、ノードの近くにある左マージンをクリックします。ブレークポイントは、左マージンに赤いバブル、エディター内にピンク色の線、ブレークポイントのノードの周囲に赤い枠でマークされています。例外ブレークポイントはブレークポイントダイアログから作成されます。

When the program is stared, breakpoints on which debugger cannot stop are specially highlighted.

Cantstop

デバッガーがブレークポイントで停止すると、現在のブレークポイント行は青色でマークされ、ブレークポイントの実際のノードはその周囲に黒い枠で装飾されます。

Stop on breakpoint

プログラムが停止しているノードのセルがテーブル内にある場合、テーブルセルは行ではなくハイライトされます。

ブレークポイントダイアログでブレークポイントを表示する

プロジェクトに設定されているすべてのブレークポイントは、ブレークポイントダイアログで表示できます。

Breakpoints view

Java ブレークポイント機能は次のとおりです。

  • フィールドウォッチポイント ;

  • 例外ブレークポイント ;

  • java ブレークポイントのポリシーを一時停止します。

  • 関連するブレークポイントデータ(スローされた例外や変更されたフィールド値など)は、変数ツリーに表示されます。

ブレークポイントでプログラムの状態を調べる

ブレークポイントにあるときは、デバッガータブを使用してプログラムの状態を調べることができます。利用可能な 3 つのパネルがあります。

  • コンボボックスを使用して選択された、スレッドのスタックフレームのリストを含む「フレーム」パネル。

  • 選択されたスタックフレーム内に見えるウォッチ可能なもの(変数、パラメーター、フィールドおよび静的フィールド)を示す「変数」ツリー。

  • ウォッチとその値のリストを含む「ウォッチ」パネル。

Debug tool debug

java デバッガーでは、" 値のコピー " アクションは変数ツリーのコンテキストメニューから利用可能です。

Copyvalue

ランタイム

プログラムの実行制御

  • ステップオーバーするには、実行 -> ステップオーバーまたは F8 を使用します。

  • メソッドからステップアウトするには、実行 -> ステップアウトまたは Shift-F8 を使用します。

  • メソッド呼び出しにステップインするには、Run-> ステップインまたは F7 を使用します。

  • プログラムの実行を再開するには、再開ボタンまたは実行 -> 再開または F9 を使用します。

  • プログラムを手動で一時停止するには、一時停止ボタンまたは実行 -> 一時停止を使用します。手動で、つまりブレークポイントではなく一時停止した場合、変数に関する情報は利用できません。

デバッガーウィンドウには、ステップアクションを利用できるツールバーがあります。

Toolbar

発現評価

MPS Java デバッガーを使用すると、プログラムスタックからの情報を使用して、デバッグ中に式を評価できます。これは、低レベルの評価と呼ばれます。ユーザーは、生成されたコードからの純粋な java 変数 / フィールドのみを使用でき、高レベルのソースコードからのエンティティは使用できないからです。

To activate evaluation mode, a program should be stopped at a breakpoint. Press Alt-F8, and a dialog appears.
In a dialog there's a MPS Editor with a statement list inside it. Some code may be written there, which uses variables and fields from stack frame. To evaluate this code, press Evaluate button. The evaluated value will appear in a tree view below.

Evaluate

エディターからコードを評価するには、それを選択して Alt + F8 を押すと、コードが評価ウィンドウにコピーされます。

Evaluateselection

ウォッチ式

java デバッガー用のウォッチ API と低レベルウォッチが実装されています。「低レベル」とは、スタック上で使用可能な変数を使用してユーザーが式を記述できることを意味します。監視を編集するには、いわゆる「コンテキスト」(使用される変数、静的コンテキスト型、およびこの型)を指定する必要があります。現時点でスタックフレームが利用可能であれば、コンテキストは自動的に埋められます。

Edit watch

ウォッチはデバッグツールウィンドウのウォッチツリーに表示できます。監視は、コンテキストメニューまたはツールバーボタンを使って作成、編集、削除できます。

Watches tree