MPS 2019.1ヘルプ

MPSデバッガを使う

デバッグ

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

実行

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

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

A Java アプリケーション or an MPSインスタンス run configurations can be created for a class with a main method or an MPS project, respectively. Go to Run -> Edit Configurations menu and press a button with "+" as shown at the picture below:

Debug1

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

Debug2

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

Debug3

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

言語定義のデバッグ

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

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

Debug4

設定をデバッグする

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

Debug6

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

ブレークポイント

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

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

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

プログラムが起動されると、デバッガが停止できないブレークポイントは特に強調表示されます。

cantstop

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

stop on breakpoint

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

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

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

breakpoints view

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

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

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

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

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

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

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

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

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

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

debug tool debug

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

copyvalue

ランタイム

プログラムの実行制御

  • To step over, use Run -> Step Over or F8.

  • To step out from a method, use Run -> Step Out or Shift-F8.

  • To step into a method call, use Run -> Step Into or F7.

  • To resume program execution, use Resume button or Run -> Resume or F9.

  • To pause a program manually, use Pause button or Run -> Pause. When paused manually, that is, not at a breakpoint, info about variables is unavailable.

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

toolbar

発現評価

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

評価モードを有効にするには、プログラムをブレークポイントで停止する必要があります。Alt-F8を押すと、ダイアログが表示されます。
ダイアログにはMPSエディターがあり、その中にステートメントリストがあります。スタックフレームの変数とフィールドを使用するコードがそこに書かれるかもしれません。このコードを評価するには、評価ボタンを押してください。評価値は下のツリービューに表示されます。

evaluate

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

evaluateselection

監視式

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

Edit watch

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

Watches tree
最終更新日: 2019年7月5日