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を提供します。どこから始めれば、キークラス、価値観とウォッチ、SourcePositionとIPositionProvider、TraceInfoResourceProvider、最後、どこから始めればカスタムデバッガエンジン...

テスト言語
テスト言語:テスト言語、導入、クイックナビゲーションテーブル、作成をテストする、1. 言語でテストアスペクトを作成する、2. テストモデルを作成する、BTestCaseによる単体テスト、TestInfo、言語定義のテスト面、ノードテスト、正確さをチェックする、型システムとデータフローのエラーと警告を...