デバッグウィンドウを活用してバグつぶし

HSPデバッグウィンドウ (変数タブ) 無料のWindowsプログラミングツール『HSP3』(Hot Soup Processor)が用意してるデバッグウィンドウ(Debugウィンドウ)機能を活用しましょう。
 変数の状態などのHSPプログラムの裏側の動作や処理をチェックできます。

そもそも、「debug」(デバッグ)はプログラムのバグを見つけて問題を解消することです。「de+bug」から来たもので、「de-」は「除去」という意味の接頭語です。(→ HSPWiKiの「デバッグの仕方」も参照)

HSPのデバッグウィンドウは、HSP3スクリプトエディタの[HSP]→[Debugウィンドゥ表示]にチェックを入れておくことで、スクリプトのコンパイル実行の時に表示されます。
 また、スクリプト上ではassert命令を利用してデバッグウィンドウ表示を制御できます。

当然ながら、実行ファイルとして出力した場合、このようなデバッグウィンドウは実行ファイル内部に存在しません。

ウィンドウの3機能

デバッグウィンドウ上には3つのタブが存在します。

[1] 全般 タブ
 HSPの一般的な変数の状態が表示されます。一部の項目を挙げます。

主な項目 簡単な説明
ディレクトリ 現在のカレントディレクトリのパス文字列が表示されます。dirinfo関数(タイプ0)でパスの取得、chdir命令でパスの変更ができます。dialog命令(タイプ16、17)などで変動します。
コマンドライン コマンドラインオプションの文字列が表示されます。dirinfo関数(タイプ4)で取得できます。HSP3スクリプトエディタの[HSP]→[起動オプション]で、仮想のコマンドライン文字列を指定できます。 コマンドラインは、たとえば実行ファイルのアイコンにファイルをドラッグ&ドロップした時、そのドロップされたファイルのパス文字列が返る部分です。
カレントウィンドゥ 現在の操作先となってるウィンドウID値が表示されます。ウィンドウはscreen命令とbgscr命令、仮想画面はbuffer命令で用意でき、メインウィンドウは0です。操作先はgsel命令で変更できます。
stat 〜 refdval 命令の結果などが返るシステム変数の数値や文字列が表示されます。

[2] 変数 タブ
 自分が用意した変数の状態が表示されます。チェックする機会がもっとも多い部分かと思います。
 チェックボックスの項目は4つあり、それにより表示内容を変更、追加できます。

項目 簡単な説明 対象
ソート 変数名をabc順にソートして表示します。 左側の
変数リスト用
モジュール モジュール内(#module命令)の変数も表示します。
配列変数 配列変数の場合、「(0)=○」、「(1)=○」、「(2)=○」・・・の形式で要素ごとのデータも表示します。配列変数はdim命令(整数値型)、sdim命令(文字列型)、ddim命令(実数値型)で宣言できます。 右側の
ボックス用
メモリ メモリ上の変数を状態をバイナリエディタ風(16進数)で表示します。

変数の「型」は、下のような名前で提示されます。

[3] ログ タブ
 スクリプト上のlogmes命令で指定されたメッセージを表示するボックスです。
 mes命令のデバッグウィンドウ用といったところでしょうか。あくまで、HSPスクリプトエディタ上でのコンパイル実行でのみ機能し、実行ファイルになった時点ではこの命令は内部に存在してないことになります。

自分でデバッグ! エラーの箇所を突き止める

何もデバッグウィンドウを使わないで、HSPの命令でデバッグは可能です。たとえば下のようなものです。

特にdialog命令は、処理が一時的に停止して[OK]ボタンを押さないかぎり処理が継続しないので、具体的にどの部分 まで進めて、どの時点でHSPエラーが発生するのか分かります。

(おまけ) HSP3スクリプトエディタ ショートカットキー

HSP(HSP3)のスクリプトファイル(*.hsp/*.as)を編集するためのエディタのショートカットキー一覧です。

新規作成 Ctrl+N
スクリプトの読み込み Ctrl+O
スクリプトの再読み込み Ctrl+L
上書き保存 Ctrl+S
印刷 Ctrl+P
アクティブなタブを閉じる Ctrl+W
エディタの終了 Ctrl+Q
元に戻す Ctrl+Z
やり直し/繰り返し Ctrl+Y
切り取り Ctrl+X
コピー Ctrl+C
貼り付け Ctrl+V
すべて選択 Ctrl+A
削除 Deleate
スクリプトのコンパイル+実行 F5
スクリプトの実行 F6
スクリプトのコンパイル F7
スクリプトのエラー表示 F8
実行ファイル自動作成 Ctrl+F9
オブジェクトファイルの作成 F9
外部ファイルの実行 F10
命令・関数 キーワード検索 F1
次を検索 F3
検索 F4
Ctrl+F
置換 Ctrl+R
前を検索 Shift+F3
先頭行に移動 Ctrl+T
最終行に移動 Ctrl+B
指定行に移動 Ctrl+J
ラベル一覧ダイアログ F11

※ 注意!
 HSP 3.0/3.1では、通常のコンパイル実行では問題ないのに、いざデバッグウィンドウを表示させた状態でコンパイル 実行すると、問答無用でスクリプトエディタごと落ちる不具合が確認されてます。HSP 3.2では修正されてます。

//	スクリプトエディタごと落ちるコード

#module

#defcfunc func_test var p1
	return p1

#global

	sdim buf, 3000
	memset buf, 'X', 3000

	mes func_test(buf)

キーワード de HSP

HSPミニ講座

★ Yahoo!経由用ページ : ファイル | フォルダ | メニュー | マウス | ウィンドウ | オブジェクト | 文字列 | システム | 関数 | sendmsg命令 | その他 | サイトマップ | リンク