• 締切済み

アプリケーションエラーの原因追求

現在VB6を使ってプログラムを作成しているのですが、 VB6上で実行後、フォームを閉じるときにアプリケーションエラーがでてしまいます。 ------------------------------------------------------ vb6.exe - アプリケーションエラー ------------------------------------------------------ "0x7c951e58"の命令が"0x00000000"のメモリを参照しました。 メモリが"read"になることはできませんでした。 ------------------------------------------------------ この『0x7c951e58』という命令が具体的にどこを指しているのかを 探る手立てはないでしょうか? よろしくお願い致します。

みんなの回答

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.5

ANo2です。 > VB6上で実行後、 と言うことで、 『「VB6の開発環境」上でしか発生しない』と思ったんですが・・・ ひょっとして、EXEにしたときにもこのエラーは発生しますでしょうか? もし、EXEにしても発生するなら、ANo2の方法が使えるかもしれません。

delilah91
質問者

お礼

dsuekichiさん、ありがとうございます。 EXEにしたときでも発生することはあるのですが、 頻度はVB6の開発環境上での場合に比べるとずいぶんと少なくなってしまします。 開発環境上:10回に7~8回ほど EXE:10回に1回発生するかどうか ご提示頂いた方法で再コンパイルしたのですが、その後はEXEの状態では発生しておりません。 EXEでエラーが発生したときに確認したいと思います。 ありがとうございました。

delilah91
質問者

補足

プログラムで使用している自作のDLLファイルのコードを見直したところ、 アプリケーションエラーは発生しなくなりました。 dsuekichiさん、chie65536さん、SAYKAさん、 この度はご回答を頂き、ありがとうございました。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.4

>この『0x7c951e58』という命令が具体的にどこを指しているのかを >探る手立てはないでしょうか? 探っても意味ないです。 表面的には「vb6自身がヌルポインタを参照して、アドレス0x00000000のメモリからデータを読もうとした」のが原因で、アプリケーションエラーが出てます。 「vb6自身がヌルポインタを参照」した原因は、vb6自身が原因ではありません。 何かの要因、例えば「作ってるプログラムを実行した」などが原因で誘発されてます。 試しに「作ってるプログラムのプロジェクトをvb6で開いて、実行せず、何もしないで閉じて終了」させてみて下さい。それで「アプリケーションエラー」が出なければvb6に問題はありません。 もし、それで「アプリケーションエラー」が出るなら「そのプロジェクトをvb6で開く為のメモリが足りない。メモリが足りずにメモリ確保に失敗した部分でアプリケーションエラーが出ている」と言う可能性があります。可能ならメモリを増設しましょう。 もし「ユーザーアプリを実行した時だけ、閉じる際にアプリケーションエラー」と言うのなら、作ってるプログラムを実行したのが直接の原因です。作ってるプログラムにどこか問題がないか調べる必要があります。 少なくとも「vb6自身を調べても無意味」なのは確かです。

delilah91
質問者

お礼

>試しに「作ってるプログラムのプロジェクトをvb6で開いて、実行せず、何もしないで閉じて終了」させてみて下さい。それで「アプリケーションエラー」が出なければvb6に問題はありません。 試してみましたが、おっしゃる通り、アプリケーションエラーは出ませんでした。 アプリケーションエラーのアドレスが作成したプログラムのデバッグの手がかりにならないかな?と思って質問させていただいたのですが、そういうことはできなそうですね。 ご回答ありがとうございました。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

ANo.2です。 ごめんなさい。 > VB6上で実行後、 (VB6の開発環境で実行)だったんですね。 だとすると、デバッグ情報はつけられないので、 私の方法は駄目ですね。

delilah91
質問者

お礼

>ごめんなさい。 とんでもないです。 dsuekichiには以前、別質問にもご回答頂きました。 その節は本当に助かりました。 ありがとうございました。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

アドレスだけでは判断できないと思います。 タダ・・・ VB6のコンパイルオプションで「シンボリック デバッグ情報を作成」を指定してコンパイルしてあれば、 「Visual C++ 」等のデバッガで、デバッグ(エラー発生場所の表示等)ができると思います。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

機械語コードだから、それを知る手段を探す事になるよ ちょっと探してみたけど、現状では何が何番という資料はすぐに出てこないみたい。(or有っても英語) ただそれが判っても、前後の処理で何をしているか探れないのでこの命令が何をしているか判っても意味がないと思う。(単なる転送や演算しかしない命令かもしれないから)

delilah91
質問者

お礼

>前後の処理で何をしているか探れないのでこの命令が何をしているか判っても意味がないと思う。 そうなんですか・・・。 ありがとうございました。

関連するQ&A

専門家に質問してみよう