2018年01月08日
イベントデバッグプラグイン、Developer Toolsを活用したエラー調査
◆イベントデバッグプラグイン、Developer Toolsを活用したエラー調査
エラー発生時に問題解決を図るための手法について、備忘録かねて記事にしました。
■準備
次のプラグインを導入する
・イベントデバッグプラグイン
制作者:トリアコンタン様
説明/ダウンロード先:
https://triacontane.blogspot.jp/2017/01/blog-post.html
・デバッグ機能詰め合わせ
制作者:かめお (Kamesoft)様
説明/ダウンロード先:
http://ytomy.sakura.ne.jp/tkool/rpgtech/tech_mv/develop/debug_util.html
■プラグインを活用した実践
ここから目的に応じて読み分けてください。
基礎知識として@Aを知っておけばデバッグ効率が上がります。
エラー時の対応力をつけたい方はBまたはCまで読み進めください。
1.テストプレイモードで起動し、F7キーを押下
2.イベントの実行を一時停止して、一つずつイベントを実行(ステップ実行)
※画像をクリックすると別ウィンドウで表示
画像の場合、次の@〜Dが実行される
@SEの演奏
A移動ルートの設定
B移動ルートの設定
CSEの演奏
D場所移動
F11キー/Enter/左クリック:イベントを1つずつ進める。コモンイベントが含まれる場合も同じ
F10キー:イベントを1つずつ進める。コモンイベントが含まれる場合は一括実行する
F6キー:ステップ実行を終了して通常の処理を行う
F9キー:マップ画面にいる場合、デバッグ画面を開く(スイッチ、変数を操作できる)
デバッグ機能詰め合わせプラグインでF9キーを拡張しているため、アイテムやアクターなど各種条件を変えながら試すことができる
3.エラーが発生するとDeveloper Toolsに赤字で表示される
Dでは行き先のマップを指定後に削除したため、行き場がなくエラーが発生
GET file:///<ゲームファイルの場所>/data/Map003.json
[メッセージから読み取れる内容]
・Map003.jsonが見つからないためのエラー発生
・4回とも同原因によるエラー(4回発生しているのはリトライを繰り返した結果と推測)
この時点で次の対処が考えられる
・Map003.json(MAPID3)が存在するか確認
・イベントの移動先をMAPID3以外に指定する
※ここではより細かく調べるため4に進む(普通は必要ない)
4.エラーの折りたたみ箇所を展開すると詳細なプロセスが表示される
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
DataManager.loadMapData //b
SceneManager.changeScene //c
SceneManager.changeScene //c
SceneManager.updateMain //d
SceneManager.update //e
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
5.4のa行とe行が何を指しているか名称から推測する
DataManager.loadDataFile //a データのロード
DataManager.loadMapData //b MAPデータのロード
SceneManager.changeScene //c 画面切り替え処理
SceneManager.changeScene //c 画面切り替え処理
SceneManager.updateMain //d 画面切り替えの更新処理
SceneManager.update //e 画面切り替えの更新処理
より詳細な部分はコアスクリプトを参照することで調べることができる
参照先は右側に「コアスクリプト名:コアスクリプトの行」として表示されている
aの場合はコアスクリプトrpg_managers.jsの93行目の処理を表す
DataManager.loadDataFile = function(name, src) {
var xhr = new XMLHttpRequest();
var url = 'data/' + src;
xhr.open('GET', url);
xhr.overrideMimeType('application/json');
xhr.onload = function() {
if (xhr.status < 400) {
window[name] = JSON.parse(xhr.responseText);
DataManager.onLoad(window[name]);
}
};
xhr.onerror = this._mapLoader || function() {
DataManager._errorUrl = DataManager._errorUrl || url;
};
window[name] = null;
xhr.send();//★93行目
};
eの場合はコアスクリプトrpg_managers.jsの1907行目の処理を表す
SceneManager.update = function() {
try {
this.tickStart();
if (Utils.isMobileSafari()) {
this.updateInputData();
}
this.updateManagers();//★1907行目
this.updateMain();
this.tickEnd();
} catch (e) {
this.catchException(e);
}
};
[分かること]
・4回とも同じエラー(4回中3回はDataManager.loadDataFileが終点)
・1回目の処理だけSceneManager.updateまで進んでいるのはリソース読み込みと平行してMAP切り替えの描画処理を行っているから
(しかし移動先のMAPが見つからないので画面が暗転した状態で停止)
リンクをクリックすることで該当箇所を表示することもできる
Developer Toolsの機能なので、Google Chromeでブラウザプレイ中ならF12キー押下、テストプレイ中ならF8キー押下で呼び出し可能
エラー発生時はエラーメッセージを読むこと、読んでわからない場合は再現方法を確立させ然るべき相手に相談することが基本だと思います。
再現性が低いトラブルの場合や自己解決する力を養いたい時(解決速度を上げたいとき)はこのような手法で調べることも視野に入れてみてはいかがでしょうか。
以上、備忘録かねた内容が制作のお役に立てれば幸いです。
◆補足
スクリプトエラーはこのように表示してくれました。
ファイル指定で「.png」まで含めたことが原因
エラー発生時に問題解決を図るための手法について、備忘録かねて記事にしました。
■準備
次のプラグインを導入する
・イベントデバッグプラグイン
制作者:トリアコンタン様
説明/ダウンロード先:
https://triacontane.blogspot.jp/2017/01/blog-post.html
・デバッグ機能詰め合わせ
制作者:かめお (Kamesoft)様
説明/ダウンロード先:
http://ytomy.sakura.ne.jp/tkool/rpgtech/tech_mv/develop/debug_util.html
■プラグインを活用した実践
ここから目的に応じて読み分けてください。
基礎知識として@Aを知っておけばデバッグ効率が上がります。
エラー時の対応力をつけたい方はBまたはCまで読み進めください。
1.テストプレイモードで起動し、F7キーを押下
2.イベントの実行を一時停止して、一つずつイベントを実行(ステップ実行)
※画像をクリックすると別ウィンドウで表示
画像の場合、次の@〜Dが実行される
@SEの演奏
A移動ルートの設定
B移動ルートの設定
CSEの演奏
D場所移動
F11キー/Enter/左クリック:イベントを1つずつ進める。コモンイベントが含まれる場合も同じ
F10キー:イベントを1つずつ進める。コモンイベントが含まれる場合は一括実行する
F6キー:ステップ実行を終了して通常の処理を行う
F9キー:マップ画面にいる場合、デバッグ画面を開く(スイッチ、変数を操作できる)
デバッグ機能詰め合わせプラグインでF9キーを拡張しているため、アイテムやアクターなど各種条件を変えながら試すことができる
3.エラーが発生するとDeveloper Toolsに赤字で表示される
Dでは行き先のマップを指定後に削除したため、行き場がなくエラーが発生
GET file:///<ゲームファイルの場所>/data/Map003.json
[メッセージから読み取れる内容]
・Map003.jsonが見つからないためのエラー発生
・4回とも同原因によるエラー(4回発生しているのはリトライを繰り返した結果と推測)
この時点で次の対処が考えられる
・Map003.json(MAPID3)が存在するか確認
・イベントの移動先をMAPID3以外に指定する
※ここではより細かく調べるため4に進む(普通は必要ない)
4.エラーの折りたたみ箇所を展開すると詳細なプロセスが表示される
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
DataManager.loadMapData //b
SceneManager.changeScene //c
SceneManager.changeScene //c
SceneManager.updateMain //d
SceneManager.update //e
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile //a
5.4のa行とe行が何を指しているか名称から推測する
DataManager.loadDataFile //a データのロード
DataManager.loadMapData //b MAPデータのロード
SceneManager.changeScene //c 画面切り替え処理
SceneManager.changeScene //c 画面切り替え処理
SceneManager.updateMain //d 画面切り替えの更新処理
SceneManager.update //e 画面切り替えの更新処理
より詳細な部分はコアスクリプトを参照することで調べることができる
参照先は右側に「コアスクリプト名:コアスクリプトの行」として表示されている
aの場合はコアスクリプトrpg_managers.jsの93行目の処理を表す
DataManager.loadDataFile = function(name, src) {
var xhr = new XMLHttpRequest();
var url = 'data/' + src;
xhr.open('GET', url);
xhr.overrideMimeType('application/json');
xhr.onload = function() {
if (xhr.status < 400) {
window[name] = JSON.parse(xhr.responseText);
DataManager.onLoad(window[name]);
}
};
xhr.onerror = this._mapLoader || function() {
DataManager._errorUrl = DataManager._errorUrl || url;
};
window[name] = null;
xhr.send();//★93行目
};
eの場合はコアスクリプトrpg_managers.jsの1907行目の処理を表す
SceneManager.update = function() {
try {
this.tickStart();
if (Utils.isMobileSafari()) {
this.updateInputData();
}
this.updateManagers();//★1907行目
this.updateMain();
this.tickEnd();
} catch (e) {
this.catchException(e);
}
};
[分かること]
・4回とも同じエラー(4回中3回はDataManager.loadDataFileが終点)
・1回目の処理だけSceneManager.updateまで進んでいるのはリソース読み込みと平行してMAP切り替えの描画処理を行っているから
(しかし移動先のMAPが見つからないので画面が暗転した状態で停止)
リンクをクリックすることで該当箇所を表示することもできる
Developer Toolsの機能なので、Google Chromeでブラウザプレイ中ならF12キー押下、テストプレイ中ならF8キー押下で呼び出し可能
エラー発生時はエラーメッセージを読むこと、読んでわからない場合は再現方法を確立させ然るべき相手に相談することが基本だと思います。
再現性が低いトラブルの場合や自己解決する力を養いたい時(解決速度を上げたいとき)はこのような手法で調べることも視野に入れてみてはいかがでしょうか。
以上、備忘録かねた内容が制作のお役に立てれば幸いです。
◆補足
スクリプトエラーはこのように表示してくれました。
ファイル指定で「.png」まで含めたことが原因
【このカテゴリーの最新記事】
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7173405
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック