MPS 2019.1ヘルプ

MPSデバッガの使用

MPSデバッガの使用

MPS Debugger provides an API to create debuggers for custom languages. Java Debugger plugin, included into MPS distribution, allows user to debug programs which are written in languages which are finally generated into Base Language/Java. We use this plugin below to illustrate MPS Debugger features, which all are available to other lagnuages via API.

実行

We start with description of how to debug a java application. If a user has a class with main method, a Java Application run configuration should be used to run/debug such a program.

Creating an instance of run configuration

A Java アプリケーション or an MPS instance 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

A menu appears, choose Java Application from it and a new Java Application configuration will be created:

Debug2

If you select Java アプリケーション , you will be able to specify the Java class to run, plus a few optional configuration parameters:

Debug3

A name should be given to each run configuration, and a main node i.e. a class with a main method should be specified. Also VM and program parameters may be specified in a configuration. Look at Run Configuration chapter to learn more about run configurations.

Debugging language definitions

Select MPS instance , if you want to debug MPS language definition code. MPS will start a new instance of MPS with a project that uses your language (it could also be the current project) and you will set breakpoints and debug in your original MPS instance.

In the Debug configuration dialog you need to indicate, which MPS project to open in the new MPS instance - either the current one by checking the Open current project check-box, or any project you specify in the field below. You could also leave both empty and create/open a project from he menu once the new MPS instance starts.

Debug4

Debugging a configuration

To debug a run configuration, select it from configurations menu and then press the デバッグ button. The debugger starts, and the デバッガツールウィンドウ appears below.

Debug6

There are two tabs in a tool: one is for the console view and other for the debugger view. In the console an application's output is shown.

ブレークポイント

Next section describes breakpoints usage.

Setting a breakpoint

A breakpoint can be set on a statement, field or exception. To set or remove a breakpoint, press Ctrl-F8 on a node in the editor or click on a left margin near a node. A breakpoint is marked with a red bubble on the left margin, a pink line inside the editor and a red frame around a node for the breakpoint. Exception breakpoints are created from the breakpoints dialog.

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

cantstop

When debugger stops at a breakpoint, the current breakpoint line is marked blue, and the actual node for the breakpoint is decorated with black frame around it.

stop on breakpoint

If the cell for a node on which the program is stopped is inside a table, table cell is highlighted instead of a line.

Viewing breakpoints via breakpoints dialog.

All breakpoints set in the project could be viewed via Breakpoints dialog.

breakpoints view

Java breakpoints features include:

  • field watchpoints;

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

  • suspend policy for java breakpoints;

  • relevant breakpoint data (like thrown exception or changed field value) is displayed in variables tree.

Examining a state of a program at a breakpoint

When at a breakpoint, a Debugger tab can be used to examine a state of a program. There are three panels available:

  • a "Frames" panel with a list of stack frames for a thread, selected using a combo box;

  • a "Variable" tree which shows watchables (variables, parameters, fields and static fields) visible in the selected stack frame;

  • a "Watches" panel with list of watches and their values.

debug tool debug

In java debugger "Copy Value" action is available from the context menu of the variable tree.

copyvalue

ランタイム

Controlling execution of a program

  • 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.

There is a toolbar in Debugger window from where stepping actions are available.

toolbar

Expression evaluation

MPS Java debugger allows user to evaluate expressions during debug, using info from program stack. It is called low-level evaluation, because user is only allowed to use pure java variables/fields from generated code, not entities from high-level source code.

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

To evaluate a piece of code from the editor, select it and press Alt+F8, and the code will be copied to the evaluation window.

evaluateselection

監視式

Watches API and low-level watches for java debugger are implemented. "Low-level" means that user can write expressions using variables, available on the stack. To edit a watch, a so-called "context"(used variables, static context type and this type) must be specified. If the stack frame is available at the moment, context is filled automatically.

Edit watch

Watches can be viewed in "Watches" tree in "Debug" tool window. Watches could be created, edited and removed via context menu or toolbar buttons.

Watches tree

最終更新日: 2019年4月12日