作品情報

ID#790

HSPトレース2

一般プログラム
作者: ShinPleSOFT



(ダウンロードの注意)

更新日:2014-10-22
バージョン:2.57 (完成度100%)

ユーザーの評価 (7)

プログラム技術3
完成度0
アイデア4

作ったHSPプログラムの動作がおかしいとき、ここで止めて変数値見ながら動かせたらと思ったことありませんか。
これは変数値を参照しながらトレース実行出来ます。
是非、使用してみてください。
■起動方法
 トレース実行したいスクリプトをHSPスクリプトエディタ上で開いた状態でhsptrace2.exeを実行してください。
 ※スクリプトはコンパイルエラーが出ないようにしておいてください。
  
■操作方法
 HSPTRACEウィンドウにHSPエディタ上のソースが表示されます。
 停止したい行をクリック選択してから右クリックして水色にしてください。
 開始ボタンを押すとトレースが開始されます。

タグ:contest2014
動作環境:Windows XP以降
プラグイン/モジュール:hspcmp.dll、hspda.dll、hspext.dll
ライセンス:自由に配布可能
作成開始:2012年12月
募集項目:

作品へのコメント(コンテスト以前のログ)

最新のコメントはこちら

No.20 ゲストユーザーが作品にコメントしました - 2014/10/30 22:16:19

    衣日和さん、コメントありがとうございます。

    共有メモリがシンプルで良さそうなのでそれを使うことにします。
    とはいえ、ちょっと実装とテストで締め切りには間に合いそうにないです。
    oncmd 0は対象のプログラムでイベントを使用していて、トレースに制御移ったときにまた制御が戻らないように停止しています。
    対象のプログラムと影響しあわないよう制御するのがなかなか難しいところです。
    今後もバージョンアップしていく予定なので良かったら使って頂きまた意見を頂けたらと思います。

No.19 [衣日和]さんが作品にコメントしました - 2014/10/28 00:30:29

    返信いただいたみたいで。分かり辛かったですか?すみませんm(_ _)m

    いくらHSPの付属だといっても条件は個々にありますよ。ランタイムやプラグインなどの個別マニュアルが総合インデックスからリンクされています。このマニュアルには関数一覧や基本的な使い方や制限事項などもまとめられていますので確認すると良いです。
    参照エラーについては答えを持ち合わせていませんが……配列は諦めて変数名だけにしてしまえばvartypeやlength類を使って全体を表示することも可能かと思います。
    どこかのタイミングで出力されていたhspTrace_txt.hspを覗いたところ1行ごとにexistやbload(システム変数を書き換える)wait(HSPに内部処理させる)oncmd(強制ON)など、元のソースにはないユーザーの意図しない動作が有ったためWM_COPYDATAの利用を提案させてもらいましたがお役に立てるようであれば幸いです。

    より使い勝手の良いツールになってくれればと思っています。

No.18 [ShinPleSOFT]さんが作品にコメントしました - 2014/10/22 22:25:35

    衣日和さん、評価とアドバイス色々ありがとうございます。
    この手の汎用的なアプリは個人ではモチベーション的にも機能的にも限界があるので色々細かいところの意見助かります。
    ダウンロード、Vectorと連動してると勝手に思ってました(^^;
    DLLをとりあえず最新にしてHSPとVectorにアップしました。
    DLLは最新を入れといてバージョンについては説明に記載しようと思います。hspcmp.dllはHSP付属なのでライセンス要らないですよねえ?
    配列自動確保前参照エラー、これはわかってますが実行する前に表示してるので難しいんですよね。いいアイデアないですかね。
    strsize変更ってのはなんでしょうか?(^^;
    WM_COPYDATAはプロセス間通信ですか。これはいいアドバイスもらいました。SQLiteやソケットでやってみたりしたのですが色々あって結局シンプルなファイルの連携にしました。やってみます!

No.17 [衣日和]さんが作品を評価しました( 技術 アイデア ) - 2014/10/21 21:47:19

    残念ながらツッコミどころ満載でした(笑)
    まずコンテストページからダウンロードしたところVer2.51でしたのでVectorからVer2.56を入手しました。
    付属のDLLが古いようで一部のスクリプトが正しく解釈されていないのでバージョンに合うDLLを用意する必要があります(hspcmp.dllの添付に関してのライセンスも確認してください)。といってもアプリの性質上ユーザー環境には適したバージョンのDLLが確実に存在しますから、DLLは無添付とする方法を考えてみては?
    また、hgimg4,hsp3dishで外部DLLを利用できないのは現状での仕様ですから対応されるのを待つしかないですね。
    ほかに配列の自動確保前に参照してエラーになったりstrsizeを変更するのも気になるところだし、ついでに行ごとの通信にはsendmsg(WM_COPYDATAなど)を利用すると安定しそうです。

    このようなデバッグツール自体は需要が有ります。HSPでは度々要望がある割に対応がいまいち……。
    このツールなら編集中のソースから取得できるし停止条件の指定や表示変数のピックアップもできるしステップ実行箇所をソース上に色付けしてくれるので怪しい箇所や複雑な処理を重点的にチェックするときにも重宝します。これからの進化に期待大な作品でした。

No.16 [ShinPleSOFT]さんが作品にコメントしました - 2014/10/16 21:18:55

    頂いた意見を反映し公開しました。
    使用してみてください。よろしくお願いします。
     Ver 2.55
     ・デバッグモードでの動作するようチェックボックス追加
     ・実行行を表示しながら動作するようチェックボックス追加
     ・フォルダ名に空白があっても動くよう修正
     Ver 2.56
     ・コンパイルエラー時、エラークリアされていないバグ修正
     ・コメントの書き方で実行されないことがあるバグ修正

No.15 [ShinPleSOFT]さんが作品にコメントしました - 2014/10/08 23:15:05

    kanahironさん、評価と報告ありがとうございます。

    /*は;を前に付けると取り消しになるんですね。
    ///*でも同様ですね。
    対応考えてみます。

No.14 [kanahiron]さんが作品を評価しました( アイデア ) - 2014/10/08 16:13:06

    V2.51とそれ以前のバージョンでコメントアウトが正しく認識されないバグがあったので報告します
    自分はコメントアウトで
    /*
    mes \"test\"
    ;/*
    と書きます
    そうすると、コメントアウトの始まり(\\/)をセミコロンでコメントアウトした時に、コメントアウトの終わり(*\\)の部分がセミコロンでコメントアウトされてエラーにならないのです
    参考: http://imgur.com/0hxcyKZ
    また自動インデントが*で戻ってしまうのも防げます

    ちなみにこうなります
    http://i.imgur.com/1BiP64V.png

    とても良いツールだと思うのでぜひ修正をお願いします

No.13 [ShinPleSOFT]さんが作品にコメントしました - 2014/10/07 20:38:04

    以下のバージョンアップをしました。
    ・デバッグモードで動作するようチェックボックス追加
    ・処理行を表示しながら動作するようチェックボックス追加
    ・フォルダ名に空白があっても動くよう修正

    処理行表示はあまり速くないです。動作中にチェックを外すと解除されます。

No.12 [ShinPleSOFT]さんが作品にコメントしました - 2014/10/04 12:26:27

    ソースがあるディレクトリ名に空白があると確かにダメですね。
    こちらのバグです。簡単に直せたので修正します。
    #ifndef _debugも画面にチェック欄を設けてデバッグモードで動かせるようにします。

    logmesは出力行制限があるのでちょっと不便ですよね。

No.11 [KOMARI]さんが作品にコメントしました - 2014/10/03 11:26:15

    連投してすみません。

    無事使えるようになったのですが、どうやら_debugが起動時に定義されなくなっているようです。
    元ソースでは、
    #ifndef _debugでの分岐
    logmesでのエラーログの出力
    をしている都合上、デバッグすることが不可能になってしまいます。
    ですので、できればデバッグモードに対応してもらえればありがたいです。

No.10 [KOMARI]さんが作品にコメントしました - 2014/10/03 11:16:07

    とうとう理由が判明しました。
    フォルダ名に【半角の空白文字】を使用していたからでした。
    改めて状況を見直すと、\"Startup failed.\"のダイアログはおそらくコンパイルが通らないから出ていたわけです。
    で、直接実行すればコンパイルができる。
    要するにフォルダの指定が正しくできていなかったため、ソースが読み込めなかったようです。
    いろいろと腑に落ちなかった点が納得できました(・ω・)

    やはりファイル名に空白や日本語は入れるべきではないことが身に染みてわかりました。代わりに\"_\"にしておきます。
    お騒がせしてしまいすいませんでした。

No.9 [ShinPleSOFT]さんが作品にコメントしました - 2014/10/02 10:26:47

    KOMARIさん、色々と試して頂いてありがとうございます。

    getmaxvar、getvarname付与はhspTrace2を使わないでそのまま実行出来ますか?と言う意味です。
    正常に動けば使用変数数が表示されるはずです。

    もしダメな場合はhgimg4かhsp3dishをincludeしてますか?
    色々と自分も以前に動かしてみたのですが上記はダメでした。
    エラー報告しているのですがマイナーな命令なのでバージョンアップでほっとかれているのではないかと思います。

No.8 [KOMARI]さんが作品にコメントしました - 2014/10/02 09:58:02

    コンパイルエラーのためエディタソースを取得できませんとでました。
    直接hspTrace_txt.hspを実行するとdialogで281が表示されました。
    どうやってもエラーが出るので使えそうにないです(´;ω;`)

No.7 [ShinPleSOFT]さんが作品にコメントしました - 2014/10/02 08:15:11

    ○mirage17さん、評価ありがとうございます。
    実際に実行しているのでコンパイルエラーがあるソースは難しいです。
    バージョンアップはしていく予定です。

    ○KOMARIさん、評価ありがとうございます。
    varinit外してもエラーが出ますか。
    そこは実際になにをしているかと言うと、hespのgetmaxvar、getvarname命令で変数名を取得しています。
    これは動かない場合があります。以下を先頭に付けて実行できますでしょうか?
    #include \"hspda.as\"
    mx=0: getmaxvar mx: dialog \"\"+mx

    起動後のソース自動取得は設けていないです。
    再起動しなくても左上の「Tab」の▼で同じものを選択することで再取得できます。

No.6 [KOMARI]さんが作品を評価しました( 技術 アイデア ) - 2014/10/01 12:28:46

    変数値表示自動とソース内のvarinitを切って起動すると、
    dialog \"Startup failed.\",0,\"Error\"
    と同等のダイアログが出てきました。
    hspTrace_txt.hspから直接起動することはできますが……。
    ちなみに、使っているソースは17,000行程度です。
    メモリの確保不足が原因なのか、はたまたソース内でvarinitの時のような不具合がおきているのかはわかりませんが、参考までに。

    あともう1つ、ファイルの再読み込み(hspTrace_txt.hspの再生成?)がされれいないように見えます。
    元ソースを改変するたびに本体を再起動させられるのは扱いづらいです。
    再読み込みボタンをつけるか、タブの再選択で反映されるように修正してもらいたいです。

    もうすこし扱いやすくなれば、絶対活用できそうなんだけどなあ(・ω・)……。

No.5 [mirage17]さんが作品を評価しました( 技術 アイデア ) - 2014/10/01 12:00:46

     HGIMG3のtest8.hspなどのhspの、
    サンプルをhsptrace2.exeを実行して、変数の値の変化
    などを見てみたが、便利なツールですね。
    コンパイルエラーのないソースでないと実行できないので、
    エラーがでても、確認できるツールだったら、もっと
    評価が高かったと思います。1行ずつ実行して、変数
    の変化を見る事ができるので、ソフトのバランス調整
    には使えそうなツールでした。
     実行後に終了時エラーがでる自作ゲームのソース
    を試してみたんですが、無理でした。
    難しいかも知れませんが、エラーの出るソースでも、
    途中まで実行でき、変数が見れれば、ものすごく
    需要のあるツールになったと思います。
    今後のこのツールのバージョンアップに期待して、
    評価をいたしました。アイデアは、とても良い
    作品でした。

No.4 [ShinPleSOFT]さんが作品にコメントしました - 2014/09/27 23:43:05

    KOMARIさん、コメントありがとうございます。
    ○No1
    「#cmpopt varinit 1」は想定してなかったです。
    単純に付加するソース上で変数初期化して対応します。
    ○No2
     停止するためには停止したい行を右クリックで水色にしてください。(break条件を入力しても停止するのは水色行です)

    修正してUPしますので、それまでは「#cmpopt varinit 1」外して使用してみてください。
    「変数値表示自動」使えるはずです。

No.2 [KOMARI]さんが作品にコメントしました - 2014/09/27 11:56:28

    (文字数制限にひっかかったので分割しました)

    2.以下のような単純なコードでテストしてみました。

    *a
    k ++
    title \"\"+k
    wait 100
    goto *a

    break条件 k==5
    参照変数 k

    この時、本来なら title \"\"+k の行で止まると思うんですが、実際は止まりませんでした。
    いろいろいじってみた結果、
    hspTrace_txt.hspを直接実行すれば止まる(当たり前)
    hspTrace_txt.hspを直接実行した直後にHspTrace2側で実行すると正しく止まる(ことがある?)
    ことが分かりました。
    いろいろ動作が不安定なので是非とも改善してもらいたいです。

No.1 [KOMARI]さんが作品にコメントしました - 2014/09/27 11:55:56

    是非とも今作ってるゲームの制作に使っいたかったのですが、エラーが出てどうやら動かないようです。
    ですが説明書を参考に変数値表示自動を切ると、無事読み込みが成功しました。(結局変数値表示自動とは何なのだろうか……。説明書を読んでもわからない……。)
    その後実行してみたのですが、いくつかエラーらしきものがでました。

    1.起動時に以下のように怒られました。

    #HSP script preprocessor ver3.4 / onion software 1997-2014(c)
    #Use file [hspdef.as]
    #packfile generated.
    #HSP code generator ver3.4 / onion software 1997-2014(c)
    #未初期化の変数があります(hsptracestgyo@hsptrace)
    hspTrace_txt.hsp(6) : error 39 : 未初期化変数を使用しようとしました (6行目)
    --> split@hsp hsptracedata@hsptrace(1),\",\",hsptracestgyo@hsptrace

    break条件または変数参照を確認してください。

    こちら側のソース内で #cmpopt varinit 1 を指定しているためかと思われます。
    是非対策を施してもらいたいです。