HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0629
mirage17hgimg3のエラーを、onerrorで、エラー番号保存17解決


mirage17

リンク

2011/6/29(Wed) 20:14:51|NO.39866

HGIMG3のプログラミング中に、hsp3hg.exeは動作を停止しました
というエラーをだして、止まるので、onerrorで、lparam にエラー発生行番号
を保存して、テキストファイルに保存したいのですが、そのやり方や、ソースを教えて
ください。また、そもそも、HGIMG3の、今回のようなエラーで、エラー発生行番号
を保存する方法はないでしょうか?エラー発生行番号が、見つけにくいので、質問します。
よろしくお願いします。



この記事に返信する


Cookies

リンク

2011/6/29(Wed) 20:38:20|NO.39867

"****.exeは動作を停止しました"系メッセージでしょ?
ならそれは、HSPが出したエラーメッセージじゃないのだから、
HSPでは処理できないようなエラーが起きたわけで、
onerrorなんていうHSPレベルの命令じゃジャンプしません。



保存する方法ではありませんが…
できることなら、怪しそうなあたりでHSPデバッグウィンドウを使って停止し、
一行ずつ実行することでしょうね。
エラーが出たら、その行にかかわるところが悪いのです。

じゃなかったらコメントアウト&コメント解除を繰り返すことですね。



mirage17

リンク

2011/6/29(Wed) 20:59:46|NO.39868

HSPデバッグウィンドウは便利ですね。使ってみました。
hsp3hg.exeは動作を停止しましたという所で、
デバッグウインドウも、終了してしまったので、エラー
番号を見つけられず、lparam=0の状態が続きました。
コメントアウト&コメント解除は、方法がわからないので、
ためしていませんが。onerrorで、ジャンプしないと、
いう事で、将来のバージョンでは、エラー番号が取得できる
ようにして、くださる事を希望します。



ORZ

リンク

2011/6/29(Wed) 22:04:10|NO.39869

いや、だからね、HSPがわからないところでエラーが起きてんだってば。
Windowsが『貴様は危険な存在だ』って言って、有無を言わさずプログラムを落とすわけ。
HSPが『あ〜、エラーっぽいからラベルに飛んどくかなぁ』と思う前にもう終了しちゃうの。
そういうの無視してonerrorで別の処理始めたら怖すぎる。

> コメントアウト&コメント解除は、方法がわからないので

ね、ネタだよな?
dialogとかぶち込みまくって大体の見当をつけてから、怪しげなところを//したり消したり
/**/したり消したりして、何が悪いのか自分で探すんだよ?
ゲーム専門学校ではどういうデバッグをしてたのか気になるな。



mirage17

リンク

2011/6/29(Wed) 22:42:54|NO.39872

Cookiesさん
ORZさん
返答ありがとうございます。
コメントアウト&コメント解除の意味がわかりました。
>ね、ネタだよな?
真面目に質問してます。
>ゲーム専門学校ではどういうデバッグ
VC++では、エラー行を探す。それとデバッガーを立ち上げる。
プレイステーションでも、エラー行を探す。
スーパーファミコンでも、エラー行を探す。
ぐらいでしょうか。
もうちょっと多くの方の意見が聞きたいので、しばらく放置してから、解決しようと
思います。



ORZ

リンク

2011/6/29(Wed) 22:44:34|NO.39873

ど、どんな意見がつくというんだ……?我々の回答に納得がいかなかったか?
そりゃすまんかったな。



Cookies

リンク

2011/6/29(Wed) 22:53:38|NO.39874

>>ゲーム専門学校ではどういうデバッグ
>VC++では、エラー行を探す。それとデバッガーを立ち上げる。
>プレイステーションでも、エラー行を探す。
>スーパーファミコンでも、エラー行を探す。
>ぐらいでしょうか。
きっとORZさんはエラー行の探し方が気になったんだろうが…



ふつうエラー行特定には、ORZさんのいうように、
dialogやmesやらを使って処理の流れ・変数の内容を出力してやるものだと思います。
それをやりやすくしたのがC++のも含めたデバッガであり、基本は流れ・変数の内容把握です。

さて、ほかの人はどんなデバッグをしているのでしょうね。



晩御飯

リンク

2011/6/29(Wed) 22:59:15|NO.39875

printfデバッグが否定されちゃうとどうしようもないような。
あとはアサーションとか。



ORZ

リンク

2011/6/29(Wed) 23:02:29|NO.39876

printとかechoとかwindow.echoとかを専門学校では教えないんですね。
そりゃ『バグの行がわからん!HSPのデバッグ機能はう●こだから次のバージョンでよろしく!』
という意見が出るわけであります。

でも、assertはちゃんとあるんだぞ?



ORZ

リンク

2011/6/29(Wed) 23:02:51|NO.39877

誤字
window.alert



ひらまる

リンク

2011/6/29(Wed) 23:05:18|NO.39878

別れた理由を解消したからといって、ヨリを戻すことができるとは限らないのです。
本当の問題は、その程度の理由で破局するような状態にあったことなのです。

ようするに、エラー行を特定してデバッグなんてのは誰でもできるけど、
本当に大切なのは「エラーが起こらないようなシステム」を構築することだということですよ。



mirage17

リンク

2011/6/30(Thu) 00:38:15|NO.39879

Cookiesさん、ORZさん、晩御飯さん、ひらまるさん、回答ありがとうございました。
自分なりには、エラー番号を取得して、保存するプログラムが、使えればと、思って
おりましたが、私の考えが、およんでいなかったと思います。
ひとまず、この問題は、ここで解決としたいと思います。
エラーが起こらないようなシステムを目指すべきだと思いました。
エラー番号表示プログラムでは、表示する前にエラーをだして、終了する為、
思うような処理ができなかった事を歯がゆく思いました。
みなさん、多くの意見をいただき、たいへん光栄です。
今後もよろしくお願いします。



あり

リンク

2011/6/30(Thu) 10:54:56|NO.39880

解決になっていますが一つ

スクリプトを組んで一番最初の実行でエラーが出ていない限りは
正常に動作するエラーが発生する前の段階があるはずですよね?
そして何かをスクリプトに追加して実行するとエラーになる
というのがほとんどだと思います。
つまり特殊な例でない限りはその追加した部分に不具合があると考えられます。

大まかにでも問題発生部分が分かっていれば余程大量の追加を一度に
していない限りは追加部分の命令をコメントアウトしたり数値を変えて
みる事でどこでエラーが出るのかを特定がしやすくなるはずですし
追加部分でエラーが出なかったとしても追加部分で使われている命令や数値に
関連した命令や処理でエラーが起こっている可能性が高いので
それらを一つづつ調べていく事によってエラーの原因特定に繋がるはずです。

デバッグ情報は確かに便利ではありますが様々なプログラムを組んでいると
たまに目に見えにくい形の問題(例えばHSP自体の不具合のような)が出てきてしまう
事もあるので最終的には自力でしらみつぶしにエラーの原因を探していく
ぐらいの覚悟は必要だと思います。

また、様々なトラブルに備えてスクリプトのバックアップは
小まめに取っておいた方がよいですよ。



osakana

リンク

2011/6/30(Thu) 11:46:55|NO.39881

数行毎に 実行中の行数をファイルへ書き出す処理を書いて置いて エラーで落ちたら、
そのログの最後に記録された実行された行数と 次の書き出し処理のある行数から、
どのブロックにバグがあるのか特定する。
とかなら出来かも。
自動化するプログラムが作れたら便利そうですね。

あっでもマクロの展開とか有るとダメか。



mirage17

リンク

2011/6/30(Thu) 12:21:14|NO.39882

ありさん、osakanaさん、ご意見ありがとうございます。
すこしずつやっていくほうがいいという考えを参考にしようと思います。
スクリプトのバックアップは小まめに取っておいた方がよいという考え方に、
同意です。自分の作っていたゲームで、過去のバックアップがあれば、先に、
進んでいた作品が1つあるからです。
数行毎に 実行中の行数をファイルへ書き出す処理は、名案ですね。
これならエラー直前の内容が把握できるし、記録もできそうだと思いました。
今後とも、やり方や、ソースなど、方法があれば、よろしくお願いします。



ORZ

リンク

2011/6/30(Thu) 19:14:57|NO.39891

過去ログに斯様なスレがございます
http://hsp.tv/play/pforum.php?mode=pastwch&num=36020



mirage17

リンク

2011/7/1(Fri) 12:09:20|NO.39899

ORZさん、貴重な情報提供ありがとうございます。
デバッグモードとか、初見の内容で、どう使おうかと、考え中です。
エラー行の探索に少しでも、役にたてばいいなと思います。
貴重なご意見ありがとうございました。



mirage17

リンク

2011/7/9(Sat) 18:34:04|NO.39964

Mさんご意見ありがとうございます。
追加部分に注目して見直したり、状況をシンプルにして見直したりといった工夫
という所に、なるほどと、納得しました。
1面だけでは、うまく動いていた、HGIMGのプログラムですが、2面を追加
したら、2面に入った所で、エラーを出して、止まるという経験をしました。
原因は、追加した、2面の多くの処理にあると、思っています。
本当は、HGIMGの、エラー番号を知りたいですが、細かい見直し作業などを
行い、解決をする、重要さを学びました。
今年は、私の住む関西でも、15%の節電をしなくてはならない状況ですが、
私の問いかけた疑問で、多くのHGIMGユーザーの為になり、
コンテストの、盛り上げになればと、思っています。



ONION software Copyright 1997-2023(c) All rights reserved.