> ## Documentation Index
> Fetch the complete documentation index at: https://docs.makkii.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# 実行とデバッグ

> Run/Pause/Step、ブレークポイント、変数とコールスタック、ログ、scode コマンド

Storm Code は本家と同じ Lua 5.3 を WASM にしたエンジンで実行します。
ゲームを起動せずにスクリプトの挙動を確認できます。

## 実行する

| 操作        | キー    | 内容                                |
| --------- | ----- | --------------------------------- |
| Run / 再開  | `F5`  | 実行を開始する。一時停止中なら再開する               |
| Pause     | `F6`  | 一時停止する                            |
| Step Tick | `F11` | 1ティック進める。ブレークポイントで止まっているときはステップイン |
| Stop      | —     | 実行を止める                            |

実行の前に自動で解析が走ります。`require` の誤りなど、エクスポート時に確実に失敗するものが
あれば **VM を起動せずに拒否します**。「ブラウザで動いたのにゲームでは動かない」を防ぐためです。

### Auto Rerun

`File > Auto Rerun on Lua Change` が有効なとき、`.lua` を編集すると自動で再実行します。
既定は有効です。

`Stop` を押すと、VM を止めるだけでなく**予約されている自動再実行も取り消します**。
止めたつもりが勝手に動き出すことはありません。Stop 後に新しく編集すれば、また予約されます。

## ブレークポイント

| 操作    | 方法                          |
| ----- | --------------------------- |
| 切り替え  | 行番号の左の余白をクリック、または `F9`      |
| すべて解除 | `Debug > Clear Breakpoints` |

止まっている間は、`変数` パネルで現在のスコープの値を、`コールスタック` パネルで呼び出しの階層を確認できます。
`変数` パネルには Watch 欄があり、登録した式が停止のたびに評価されます。

ブレークポイントと Watch 式は端末ごとに保存され、リロードで復元されます。

## ログ

`ログ` パネルは**読み取り専用の表示**です。入力やコマンド履歴はありません。

表示は「実行ブロック」単位で、ヘッダ行 `$ <コマンド>` → 標準出力/標準エラー →
フッタ `[exit N · 123ms]` の形です。終了コードが 0 でなければ赤く表示されます。
Lua の `print` もここに流れます。

上限は 5000 行です。超えると「N 行を破棄」という行が1つ出ます。

<Note>
  [Remote MCP](/storm-code/guides/remote-mcp) 経由でエージェントが実行した出力は、この
  パネルには出ません。**人間が操作した結果だけを出す**方針のためです。
  エージェントの出力は MCP ターミナルウィンドウに分けて表示します。
</Note>

## `scode` コマンド

ログパネルからは `scode` コマンドで実行を操作できます。

| サブコマンド                      | 内容                |
| --------------------------- | ----------------- |
| `run [file]`                | 実行を開始する (すぐ戻る)    |
| `pause` / `resume` / `stop` | 一時停止 / 再開 / 停止    |
| `input`                     | Sim I/O の入力値を操作する |
| `out`                       | 出力値を確認する          |
| `lint`                      | 解析を走らせる           |
| `compile`                   | リンクと minify を行う   |

`--help` で使い方が出ます。
`ls` や `cat` のような標準的なコマンドとシェルの構文も使えます。
参照先は Storm Code のワークスペースで、端末のファイルではありません。

## エラーの見え方

実行時エラーは種類ごとに分類され、原因に応じたヒントが付きます
(`nil` の添字参照、`nil` の呼び出し、算術演算、比較、連結、引数不正、
スタックオーバーフロー、実行時間超過、メモリ超過、構文エラーなど)。

分類できないものは原文をそのまま表示します。黙って握り潰すことはありません。
一覧は[診断とエラーコード](/storm-code/reference/diagnostics)にあります。

`require` したモジュールで起きたエラーは、そのモジュール名と行番号で表示されます。
デバッグ実行はリンクも minify も通さず、書いたソースをそのまま実行しているためです。

## タブを離れると自動で止まります

**タブが隠れて30秒経つと Lua VM の実行を止め、戻ってきたら再開します。**
モバイルで電池を消費し続けるのを防ぐためです。

* 止めるのは実行中のときだけです。ブレークポイントで止まっているときや、
  自分で一時停止したものには触りません。
* 再開するのは**自動で止めたものだけ**です。手で止めたものが勝手に動き出すことはありません。
* モニターは最後のフレームを残します。
* \*\*同期は止まりません。\*\*止まるのはこの端末の実行だけで、ワークスペースの内容ではありません。
* 戻ってきたときに1回だけ通知します (止まった瞬間は画面が見えていないため)。

この状態は保存されません。リロード後は停止状態から始まります。
