ゲームを公開したところ、PCが落ちてしまったという報告が何件も入りました。
困ったことに自分のPCで再現性がないのです。
まったく原因に検討が付かないせいで見せるべきコードも具体的な聞き方もわかりませんので、一般論として答えをいただければいいのですが、
プログラミングで特に危険な(ブルスクを引き起こしうる)ミスとは例えばどういうものなんでしょうか。
とりあえず、ポインタは危険そうなのでアドレスを審判してないか総洗いしてみますが、
他の可能性がありましたら教えていただけると嬉しいです。
ブルースクリーンになりうるゲーム
Re: ブルースクリーンになりうるゲーム
イベントビューアで調べてみてはいかがでしょうか?
再現性が無いなら、PCが落ちたという人にイベントビューアのコピペを送ってもらうようにするしかないと思います。
変数の初期化忘れや配列の要素外にアクセスしているのかもしれません。
あとはメモリリークですかね。
関係のないこと書いていたらもうしわけないです。
再現性が無いなら、PCが落ちたという人にイベントビューアのコピペを送ってもらうようにするしかないと思います。
変数の初期化忘れや配列の要素外にアクセスしているのかもしれません。
あとはメモリリークですかね。
関係のないこと書いていたらもうしわけないです。
オフトピック
因みに、何のゲームでしょうか?
初心者です
Re: ブルースクリーンになりうるゲーム
あなたの危惧する通り、ポインタは使い方を誤ると簡単に落ちますが、ブルースクリーンになるケースってのは最近のOSではあまり見かけませんね。
Win9x/2k/NTがメインだったころにはよく聞きましたが。。
XP/Vista/7がメインの今では、ブルースクリーンになるのを見たことがないですな~
あるとすればBIOSレベル、つまりドライバ開発で落ちるぐらい?
まあ動かしたPCのシステム環境を知ることが第一ですね。
あなたのPCの環境と、その落ちたPCでの環境の情報をそろえてください。
Win9x/2k/NTがメインだったころにはよく聞きましたが。。
XP/Vista/7がメインの今では、ブルースクリーンになるのを見たことがないですな~
あるとすればBIOSレベル、つまりドライバ開発で落ちるぐらい?
まあ動かしたPCのシステム環境を知ることが第一ですね。
あなたのPCの環境と、その落ちたPCでの環境の情報をそろえてください。
written by へにっくす
Re: ブルースクリーンになりうるゲーム
ブルースクリーンを発生させるとなると、ビデオドライバ関連を疑いますね。
プログラムではデバイス操作の周辺で曖昧な点がないかチェックしてみてください。
渡すパラメータは正しいか
エラーも含めて戻り値は調べているか
デバイスの状態変化を考慮しているか
といったところでしょうか。
プログラムではデバイス操作の周辺で曖昧な点がないかチェックしてみてください。
渡すパラメータは正しいか
エラーも含めて戻り値は調べているか
デバイスの状態変化を考慮しているか
といったところでしょうか。
Re: ブルースクリーンになりうるゲーム
>>3D_3Dさん
イベントビューアですか。
落ちたのなら『管理イベント』にエラーが表示されるといったものでいいんでしょうか。
やはりアドレス関連が問題になりがちですかね。
ちなみに、ゲームは2Dのシレン系のローグライクです。
DXLIBとC言語を使いVC++で作成してます。
>>へにっくすさん
Processor: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (8 CPUs), ~2.8GHz
Memory: 4096MB RAM
Card name: NVIDIA GeForce GTS 250
メモリ合計:2031MB
こういうスペックをお願いすればいいんですかね。
イベントビューアですか。
落ちたのなら『管理イベント』にエラーが表示されるといったものでいいんでしょうか。
やはりアドレス関連が問題になりがちですかね。
ちなみに、ゲームは2Dのシレン系のローグライクです。
DXLIBとC言語を使いVC++で作成してます。
>>へにっくすさん
Processor: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (8 CPUs), ~2.8GHz
Memory: 4096MB RAM
Card name: NVIDIA GeForce GTS 250
メモリ合計:2031MB
こういうスペックをお願いすればいいんですかね。
Re: ブルースクリーンになりうるゲーム
>>ISLeさん
>渡すパラメータは正しいか
関数に渡す定数のことですよね。実はいくつか
「'float' から 'int' への変換です。データが失われる可能性があります。」のような警告は受けてますが、
問題ではないと思い全て放置してきました。これってバグになるものなんでしょうか。
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
アドレス侵犯に関して質問です。
この件に関して、僕のコードはほとんどポインタを使わず、(少数ありましたが全てバグがないことを確認済み)
動的配列は一切使っていないので、
もしアドレス侵犯に原因があるとしたら間違いなく配列の要素数を超えた数字を入れてしまっていることが原因となるでしょう。
あまりに多く、中々発見しにくいのですが、
VC++にこの検出を自動で行わせることはできないのでしょうか。
>渡すパラメータは正しいか
関数に渡す定数のことですよね。実はいくつか
「'float' から 'int' への変換です。データが失われる可能性があります。」のような警告は受けてますが、
問題ではないと思い全て放置してきました。これってバグになるものなんでしょうか。
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
アドレス侵犯に関して質問です。
この件に関して、僕のコードはほとんどポインタを使わず、(少数ありましたが全てバグがないことを確認済み)
動的配列は一切使っていないので、
もしアドレス侵犯に原因があるとしたら間違いなく配列の要素数を超えた数字を入れてしまっていることが原因となるでしょう。
あまりに多く、中々発見しにくいのですが、
VC++にこの検出を自動で行わせることはできないのでしょうか。
Re: ブルースクリーンになりうるゲーム
いいえ、違います。namari さんが書きました:>渡すパラメータは正しいか
関数に渡す定数のことですよね。
デバイスを操作する関数に渡すパラメータです。
DXライブラリを使用しているならデバイスを直接操作する場面は少ないでしょうがまったくないわけではありません。
ヒープのバッファオーバーランを動的に検出するツールは、企業向け製品としていくつか存在します。namari さんが書きました:あまりに多く、中々発見しにくいのですが、
VC++にこの検出を自動で行わせることはできないのでしょうか。
低価格なものでも数十万円からですが。
フリーの検出ツールもありますが、本件のような症状に対しては役に立たないと思います。
症状が出ないようにコードの書き方をアドバイスしてくれる類のものなので。
Re: ブルースクリーンになりうるゲーム
他にどのOSで動かしているのかも必須です。またVC++で作成してるならnamari さんが書きました:Processor: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (8 CPUs), ~2.8GHz
Memory: 4096MB RAM
Card name: NVIDIA GeForce GTS 250
メモリ合計:2031MB
こういうスペックをお願いすればいいんですかね。
VC++のバージョンも必須ですね。
バージョンによってはライブラリインストールが要ります。(足りない場合プログラムの起動すらしません)
googleで「vc++ redistributable」で検索。
配列のインデックスがおかしい場合は、どのPCでも例外で落ちると思いますが、
開発環境では落ちないのでしょう? どうなのでしょうか?
written by へにっくす
Re: ブルースクリーンになりうるゲーム
>>ISLeさん
デバイスを操作する関数というものがいまいちどういう関数なのか把握できません。
検出ツールは実質不可能なんですね。分かりました。
>>へにっくすさん
+
windows 7 Home Premium/service pack 1
vc++は2008 Express Edition SP1
とこんな感じでしょうか。
プレイヤーたちは起動はできていました。
全く落ちることなく快適にプレイしてる人や短期間に2連続で落ちる人などいました。
今思い出してみると、開発中に一度だけ落ちたことがありました。
かなり昔で、一回しか起こらなかったのですが、もしかしたら当時から致命的なミスがあったのかもしれません。
こうなると環境依存の可能性が高くなりそうなので、やはり環境を問うべきですかね。
デバイスを操作する関数というものがいまいちどういう関数なのか把握できません。
検出ツールは実質不可能なんですね。分かりました。
>>へにっくすさん
+
windows 7 Home Premium/service pack 1
vc++は2008 Express Edition SP1
とこんな感じでしょうか。
プレイヤーたちは起動はできていました。
全く落ちることなく快適にプレイしてる人や短期間に2連続で落ちる人などいました。
今思い出してみると、開発中に一度だけ落ちたことがありました。
かなり昔で、一回しか起こらなかったのですが、もしかしたら当時から致命的なミスがあったのかもしれません。
こうなると環境依存の可能性が高くなりそうなので、やはり環境を問うべきですかね。
Re: ブルースクリーンになりうるゲーム
困ったことに関係ないだろうバグをいくつか修正したところ、
一緒に消えてなくなってしまいました。
・フォントハンドルを多重に読み込んでいたこと。
・プロセスが消しても消えずに残っていたこと。
ぐらいが修正点なんですが、
そもそもどちらも初回起動時には問題にならない部分なので
初回起動時に落ちた人もいることを考えると怪しいものです。
しかし報告が一切なくなったのでここで一応解決ということにしておきます。
一緒に消えてなくなってしまいました。
・フォントハンドルを多重に読み込んでいたこと。
・プロセスが消しても消えずに残っていたこと。
ぐらいが修正点なんですが、
そもそもどちらも初回起動時には問題にならない部分なので
初回起動時に落ちた人もいることを考えると怪しいものです。
しかし報告が一切なくなったのでここで一応解決ということにしておきます。