====== デバッグ ======
[[erabasicリファレンス|リファレンストップ]] · [[erabasicリファレンス_総索引|名前の総索引]]
デバッグ起動、変数ウォッチ、コンソール、デバッグ命令を調べます。
===== 命令の説明 =====
==== DEBUGPRINT <文字列> ====
==== DEBUGPRINTL <文字列> ====
==== DEBUGPRINTFORM <書式付文字列> ====
==== DEBUGPRINTFORML <書式付文字列> ====
これらはそれぞれPRINT命令やPRINTLと同様の動作をします。\\
異なる点は出力先がメインコンソールではなくデバッグコンソールである点です。\\
また、SKIPDISP命令の影響を受けず、nを使用することもできません。\\
==== DEBUGCLEAR ====
デバッグコンソールのPRINT内容を全て削除します。\\
==== ASSERT <数式> ====
引数が真(非0)のとき、何もしません。\\
引数が偽(0)の時、エラーを出力してスクリプトの実行を停止します。\\
===== DEBUG命令の動作条件 =====
DEBUG系命令はデバッグモードで起動したときのみ動作します。通常起動時は実行されず、引数の解析も行われません。
===== デバッグモードの起動と操作 =====
デバッグモードはver 1.750で追加されたモードです。\\
この機能は「デバッグコマンドを使用する」オプションとは無関係です。\\
==== Emueraをデバッグモードで起動する ====
Emueraをデバッグモードで起動するにはコマンドライン引数に-Debugを渡します。\\
コマンドライン引数を渡す簡単な方法は、\\
EmueraXXXX.exeを右クリックし、「ショートカットの作成」を選択、\\
作成されたショートカットを右クリックし、「プロパティ」を選択、\\
プロパティで「リンク先」の文字列の末尾に「 -Debug」を加えます。\\
(リンク先が"C:\〜〜\EmueraXXX.exe"のように""で囲まれている場合、"の後に「 -Debug」を加えてください)\\
ショートカットをダブルクリックするとデバッグモードで起動するようになります。\\
==== デバッグモード時の動作 ====
デバッグモードで起動するとdebugというフォルダが自動的に作成されます。\\
後述する変数ウォッチのリストやデバッグコンソールのログはdebugフォルダに保存されます。\\
デバッグモード時には通常実行される行に加え、;#;で始まる行、[IF_DEBUG]〜[ENDIF]の間の行が実行されます。\\
デバッグモードでないときはこれらの行はコメントと同様に扱われ、実行されません。\\
逆にデバッグモード時には、[IF_NDEBUG]〜[ENDIF]の間の行はコメントして扱われ、実行されません。\\
;#;PRINTL この行はデバッグモード時のみ実行されます。
[IF_DEBUG]\\
PRINTL この行はデバッグモード時のみ実行されます。
[ENDIF]\\
[IF_NDEBUG]\\
PRINTL この行はデバッグモードでないときのみ実行されます。
[ENDIF]\\
また、デバッグモード時にのみ機能する命令があります。\\
DEBUGPRINT、DEBUGPRINTFORM、DEBUGPRINTL、DEBUGPRINTFORML の命令はPRINT文などと同じ機能を持ちますが、出力先がデバッグウインドウです。\\
ASSERT命令は引数が0の時、エラーを出します。引数が非0の時は何もしません。\\
DEBUGCLEAR命令はデバッグウインドウの文字を全て消去します。引数はありません。\\
これらの命令は非デバッグモード時には何もしません。\\
引数の解析も行わないのでDEBUGPRINTFORM の書式がおかしいなどの問題があっても非デバッグモード時には何も起きません。\\
これらは何もしない命令と扱われるだけでコメント行と扱われるわけではないのでSIF文の直後に使っても安全です。\\
また、変数__FILE__, __LINE__, __FUNCTION__はデバッグ時のみ意味のある値を返します。\\
非デバッグモード時には0又は空文字列を返します。\\
==== デバッグウインドウ ====
デバッグモード時にはデバッグウインドウを開くことが出来ます\\
メニューのデバッグから開くか、コンソールで@DEBUGと入力して下さい。\\
また、メインコンソールでショートカットキーCtrl+Dでもデバッグウインドウを開くことが出来ます。\\
コンフィグオプションによっては起動時にデバッグウインドウが自動で開きます。\\
デバッグウインドウはサイズ可変です。用途に合わせてサイズを変えてください。\\
デバッグウインドウの初期サイズ、初期位置は設定ダイアログの「デバッグ」の項目から変更できます。\\
デバッグウインドウを開いた状態で設定ダイアログを開くと現在のサイズ、位置を取得できます\\
デバッグウインドウに表示される情報はデバッグウインドウ内のタブによって切り替えることができます。\\
情報はデバッグウインドウがフォーカスを得た時やタブを切り替えた時などに更新されます。\\
また、メインコンソールからショートカットキーCtrl+Rで情報を更新できるほか、\\
DEBUGCLEAR命令によって文字を全て消去することもできます。\\
==== 変数ウォッチ ====
「対象」と書かれたカラムの下辺りをクリックしてください。編集モードになるはずです。\\
ここに「TALENT:MASTER:2」、「NAME:TARGET」など値を知りたい変数名を入力すると「値」の項に値が表示されます。\\
値取得中にエラーが発生した場合にはエラーの内容が表示されます。\\
対象を削除したい場合、対象を編集し空文字列にしてください。\\
変数ウォッチが更新されるタイミングでその行が削除されます。\\
変数ウォッチに追加した対象はデバッグウインドウを閉じた時に保存され、開く時に読み込まれます。\\
それ以外のタイミングで保存・読込をしたい場合にはメニューのファイルから保存・読込をしてください。\\
「対象」として変数だけでなく定数や式も利用できますが、式中関数を呼び出す場合には注意してください。\\
変数ウォッチは値を更新するたびにその式中関数を実際に呼び出しています。\\
呼び出された式中関数に他の変数を変えるなどの副作用がある場合、変数ウォッチが更新されるたびに副作用が起きます。\\
==== スタックトレース ====
呼び出し中の関数の情報です。\\
一番上が現在の関数で、以下に現在の関数を呼び出した関数、その関数を呼び出した関数と続きます。\\
==== コンソール ====
デバッグ用のコンソールです。\\
DEBUGPRINTやDEBUGPRINTFORMなどの出力先です。\\
また、メインコンソールに出力される情報のうち、エラーや警告などはデバッグコンソールにも出力されます。\\
コンソールの一番下のテキストボックスからはデバッグコマンドを入力できます。\\
メインコンソールでのデバッグコマンドと異なり、先頭に@をつける必要はありません。\\
この機能は「デバッグコマンドを使用する」オプションがNOの場合でも有効です。\\
また、MASTERの名前がイカサマになることはありません。\\
===== デバッグコンソールのコマンド =====
※標準ではデバッグコマンドは使用できません。\\
必要ならヘルプの設定から"デバッグコマンドを使用する"にチェックを入れてください。\\
※この機能はデバッグモードが無かったバージョンの簡易的な機能です。\\
現バージョンでのデバッグにはデバッグモードでの起動を勧めます。\\
スクリプト実行中(ゲーム中)、"@"で始まる文字列を入力するとデバッグコマンドとして受け付けられます。\\
大文字小文字を区別するかどうかはemuera.config中の"大文字小文字の違いを無視する"の指定に依存します。\\
==== 入力書式 ====
デバッグコマンドはERBと同じ書式で指定します。\\
例えば、\\
@MONEY = 10000\\
@PRINTV FLAG:200\\
@PRINTFORM %NAME:MASTER%のCFAG(1) = {CFLAG:MASTER:1}\\
@ADDCHARA 1\\
のように書くことができます。\\
また、単に変数や数式を入力した場合、それらの値が出力されます\\
(下記の@の後の半角スペースは必須ではありません)\\
@ FLAG:200\\
@ @"%NAME:MASTER%のCFAG(1) = {CFLAG:MASTER:1}"\\
ただしIFやCALLのようなスクリプトの流れを変える命令や、INPUTやWAITのように入力を要求する命令は使えません。\\
==== デバッグ専用コマンド ====
いくつかのERBにはない命令があります。\\
@REBOOT\\
再起動してemuera.configやcsv、erbファイルを読み直します。\\
@OUTPUT\\
現在のログをemuera.logに出力します。既に存在する場合は上書きされます。\\
これはOUTPUTLOG命令と同じ動作です。\\
@EXIT\\
Emueraを終了します。QUIT命令と同じ動作です。\\
@CONFIG\\
設定ダイアログを開きます。\\
@DEBUG\\
デバッグダイアログを開きます。これはデバッグモードで起動した場合のみ有効です。\\
==== 通常命令を実行した場合の注意 ====
上記以外、つまり通常のERBの命令を実行した場合、MASTERの名前・呼び名が強制的に"イカサマ"になります。\\
これはデバッグコマンドがチートとしての性質も持つため、乱用を防ぐための措置です。\\