HSP3プログラミング入門講座
powered by Let's 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進数)で表示します。 |
変数の「型」は、下のような名前で提示されます。
- int → 整数値型 変数
- double → 実数値型 変数 (小数点)
- str → 文字列型 変数
- label → ラベル型 変数
[3] ログ タブ
スクリプト上のlogmes命令で指定されたメッセージを表示するボックスです。
mes命令のデバッグウィンドウ用といったところでしょうか。あくまで、HSPスクリプトエディタ上でのコンパイル実行でのみ機能し、実行ファイルになった時点ではこの命令は内部に存在してないことになります。
自分でデバッグ! エラーの箇所を突き止める
何もデバッグウィンドウを使わないで、HSPの命令でデバッグは可能です。たとえば下のようなものです。
- mes命令 ... 変数の状態を文字で表示。
- title命令 ... タイトルバー上に変数の状態を表示。
- dialog命令 ... メッセージボックス上に変数の状態を表示。処理が一時停止するのもポイント。
特にdialog命令は、処理が一時的に停止して[OK]ボタンを押さないかぎり処理が継続しないので、具体的にどの部分 まで進めて、どの時点でHSPエラーが発生するのか分かります。
(おまけ) HSP3スクリプトエディタ ショートカットキー
HSP(HSP3)のスクリプトファイル(*.hsp/*.as)を編集するためのエディタのショートカットキー一覧です。
|
|
|
||||||||||||||||||||||||||||||||||||||||||
|
|
※ 注意!
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ダウンロード
- 実行ファイル作成
- HSP動作環境
- 演算子
- 文字列操作
- 命令・関数一覧
- アイコン変更
- PACKFILE
- PACKFILE編集
- #packopt
- #deffunc
- HSPエラー
- HSPエラー番号
- HSPエラー7
- HSPエラー12
- HSPエラー13
- HSPエラー33
- HSPエラー38
- HSPエラー41
- ホームページ作成
- バージョン
- フォント
- オブジェクト
- ボタン
- 入力ボックス
- オブジェクト非表示
- Win32 API
- メニュー
- HSPLet
- サウンド再生
- 画像
- PNGファイル
- HSP質問掲示板
- デバッグ
- ドラッグ&ドロップ
- ブラウザ作成
- HSP書籍本