MPS 2023.3 ヘルプ

MPS デバッガーを使う

デバッグ

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

実行

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

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

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

Debug1.png

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

Debug2.png

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

Debug3.png

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

言語定義のデバッグ

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

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

Debug4.png

設定をデバッグする

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

Debug6.png

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

ブレークポイント

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

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

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

プログラムが開始されると、デバッガーが停止できないブレークポイントが特別にハイライトされます。

cantstop.png

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

stop-on-breakpoint.png

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

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

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

breakpoints-view.png

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

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

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

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

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

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

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

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

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

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

debug-tool-debug.png

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

copyvalue.png

ランタイム

プログラムの実行制御

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

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

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

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

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

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

toolbar.png

発現評価

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

評価モードをアクティブにするには、プログラムをブレークポイントで停止する必要があります。Alt-F8 を押すと、ダイアログが表示されます。

ダイアログには、ステートメントリストを含む MPS エディターがあります。スタックフレームの変数とフィールドを使用するコードがそこに記述されている場合があります。このコードを評価するには、評価ボタンを押します。評価された値は、以下のツリービューに表示されます。

evaluate.png

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

evaluateselection.png

監視式

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

Edit_watch.png

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

Watches_tree.png