MPS デバッガーを使う
デバッグ
MPS デバッガーは、カスタム言語用のデバッガーを作成するための API を提供します。MPS ディストリビューションに含まれている Java デバッガープラグインは、ユーザーが最終的に Base Language/Java に生成される言語で書かれているプログラムをデバッグすることを可能にします。下記のプラグインを使って MPS デバッガーの機能を説明します。これらはすべて API を介して他の言語でも利用できます。
実行
java アプリケーションをデバッグする方法の説明から始めます。ユーザーが main メソッドを持つクラスを持っている場合は、そのようなプログラムを実行 / デバッグするために Java アプリケーションの実行構成を使用する必要があります。
実行構成のインスタンスの作成
Java アプリケーションまたは MPS インスタンス実行構成は、それぞれメインメソッドまたは MPS プロジェクトを持つクラスに対して作成できます。実行 -> 構成の編集メニューに移動し、下の図に示すように「+」の付いたボタンを押します。
メニューが表示されたら、そこから Java アプリケーションを選択すると、新しい Java アプリケーション設定が作成されます。
Java アプリケーションを選択した場合は、実行する Java クラスと、いくつかのオプションの構成パラメーターを指定できます。
各実行構成に名前を付ける必要があり、メインノード、つまり main メソッドを持つクラスを指定する必要があります。VM とプログラムのパラメーターも設定で指定できます。実行構成の詳細については、実行構成の章を参照してください。
言語定義のデバッグ
MPS 言語定義コードをデバッグしたい場合は、MPS インスタンスを選択してください。MPS はあなたの言語を使うプロジェクトで MPS の新しいインスタンスを開始し(それは現在のプロジェクトかもしれません)、オリジナルの MPS インスタンスでブレークポイントを設定してデバッグします。
デバッグ構成ダイアログで、新しい MPS インスタンスで開く MPS プロジェクト - 現在のプロジェクトを開くチェックボックスをオンにして現在のプロジェクト、または下のフィールドで指定したプロジェクトを指定する必要があります。新しい MPS インスタンスが起動したら、空のままにして、メニューからプロジェクトを作成 / 開くこともできます。
設定をデバッグする
実行構成をデバッグするには、設定メニューから実行構成を選択してデバッグボタンを押します。デバッガーが起動し、デバッガーツールウィンドウが下に表示されます。
ツールには 2 つのタブがあります。1 つはコンソールビュー用、もう 1 つはデバッガービュー用です。コンソールにアプリケーションの出力が表示されます。
ブレークポイント
次のセクションではブレークポイントの使用箇所について説明します。
ブレークポイントを設定する
ブレークポイントは、ステートメント、フィールド、例外に設定できます。ブレークポイントを設定または削除するには、エディター内のノードで Ctrl + F8 キーを押すか、ノードの近くの左余白をクリックします。ブレークポイントは、左余白に赤いバブル、エディター内にピンクの線、ブレークポイントのノードの周囲に赤いフレームでマークされます。例外ブレークポイントは、ブレークポイントダイアログから作成されます。
プログラムが開始されると、デバッガーが停止できないブレークポイントが特別にハイライトされます。
デバッガーがブレークポイントで停止すると、現在のブレークポイント行は青色でマークされ、ブレークポイントの実際のノードはその周囲に黒い枠で装飾されます。
プログラムが停止しているノードのセルがテーブル内にある場合、テーブルセルは行ではなくハイライトされます。
ブレークポイントダイアログでブレークポイントを表示する
プロジェクトに設定されているすべてのブレークポイントは、ブレークポイントダイアログで表示できます。
Java ブレークポイント機能は次のとおりです。
フィールドウォッチポイント ;
例外のブレークポイント ;
java ブレークポイントのポリシーを一時停止します。
関連するブレークポイントデータ(スローされた例外や変更されたフィールド値など)は、変数ツリーに表示されます。
ブレークポイントでプログラムの状態を調べる
ブレークポイントにあるときは、デバッガータブを使用してプログラムの状態を調べることができます。利用可能な 3 つのパネルがあります。
コンボボックスを使用して選択された、スレッドのスタックフレームのリストを含む「フレーム」パネル。
選択されたスタックフレーム内に見えるウォッチ可能なもの(変数、パラメーター、フィールドおよび静的フィールド)を示す「変数」ツリー。
ウォッチとその値のリストを含む「ウォッチ」パネル。
java デバッガーでは、" 値のコピー " アクションは変数ツリーのコンテキストメニューから利用可能です。
ランタイム
プログラムの実行制御
ステップオーバーするには、実行 -> ステップオーバーまたは F8 を使用します。
メソッドからステップアウトするには、実行 -> ステップアウトまたは Shift-F8 を使用します。
メソッド呼び出しにステップインするには、Run-> ステップインまたは F7 を使用します。
プログラムの実行を再開するには、再開ボタンまたは実行 -> 再開または F9 を使用します。
プログラムを手動で一時停止するには、一時停止ボタンまたは実行 -> 一時停止を使用します。手動で、つまりブレークポイントではなく一時停止した場合、変数に関する情報は利用できません。
デバッガーウィンドウには、ステップアクションを利用できるツールバーがあります。
式
式評価
MPS Java デバッガーを使用すると、プログラムスタックからの情報を使用して、デバッグ中に式を評価できます。これは、低レベルの評価と呼ばれます。ユーザーは、生成されたコードからの純粋な java 変数 / フィールドのみを使用でき、高レベルのソースコードからのエンティティは使用できないからです。
評価モードをアクティブにするには、プログラムをブレークポイントで停止する必要があります。Alt-F8 を押すと、ダイアログが表示されます。
ダイアログには、ステートメントリストを含む MPS エディターがあります。スタックフレームの変数とフィールドを使用するコードがそこに記述されている場合があります。このコードを評価するには、評価ボタンを押します。評価された値は、以下のツリービューに表示されます。
エディターからコードを評価するには、それを選択して Alt + F8 を押すと、コードが評価ウィンドウにコピーされます。
ウォッチ式
java デバッガー用のウォッチ API と低レベルウォッチが実装されています。「低レベル」とは、スタック上で使用可能な変数を使用してユーザーが式を記述できることを意味します。監視を編集するには、いわゆる「コンテキスト」(使用される変数、静的コンテキスト型、この型)を指定する必要があります。現時点でスタックフレームが利用可能であれば、コンテキストは自動的に埋められます。
ウォッチはデバッグツールウィンドウのウォッチツリーに表示できます。ウォッチは、コンテキストメニューまたはツールバーボタンを使って作成、編集、削除できます。
関連ページ:
デバッガー API
MPS は、MPS で動作するデバッガーエンジンを作成するための java API を提供します。どこから始めれば:カスタムデバッガーエンジンの作成を開始する良い方法は、MPS での Java デバッガープラグインの実装を調べることです。ソースコードは、ソリューション jetbrains.mps.debugger.java.api および jetbrains.mps.debugger.java.runtime にあります。デバッガー API 自体は jetbrains.mps.debugger.api....
テスト言語
テスト言語:導入:テストは言語設計者の作業の重要な部分です。MPS が優れているためには、BaseLanguage コードと言語の両方のテスト機能を提供する必要があります。jetbrains.mps.baselanguage.unitTest 言語を使用すると、JUnit-like ユニットテストで BaseLanguage コードをテストできますが、言語テスト言語の jetbrains.mps.lang.test は、言語テストを作成するための便利なインターフェースを提供します。クイックナビゲーション...