スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ゲーム製作で厄介なバグに遭遇した・・・

ゲーム製作で厄介なバグに遭遇しました。

先日、Debugモードで ある程度ゲーム製作が進んだので、
Releaseモードでビルドして実行してみようと思ったんですよ。

強制終了しました。

うぉぉおおい!!
なぁぁああんで!!?
 (悲鳴)


----------------------------------------------------------------
Debugモードで実行できるのに、
Releaseモードで強制終了する状態

----------------------------------------------------------------
になったのです。


ゲームを公開しようとしてるのに
Releaseモードで落ちるとか論外。
(本当に困る)


・・・で、ずっと 色々と調べてたんですけど、
どうやらvectorのback関数で例外が発生している模様。

・・・内部メモリに何かが起こっている?
どこかで変な所に書き込んでヒープを破壊したりしているのだろうか?
発生箇所は分かったものの、対処法が分からん。

画像の読み込み(バッファの確保)が原因かと思い、
その部分を全部コメントアウトしてもバグは発生しました。

良く分からないので、std::vectorは使わないという対処法をとることにする。


【反省】
ゲーム公開予定がある場合は、
主にReleaseモードで実行する。
(まさかこんな事になるとは・・・)
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

Releaseで起きる問題

 よくありますよね、そういうことって。

 この手の問題は丹念におっていけば解決できる問題なのですが、原因を調べず対処療法であたると後で大変なことになることが結構あります。
 今のうちにきちんとエラーメッセージを調べるなり、落ちた周辺からその関係するモジュール全般を調べるなりして原因を調べておいた方がいいですよ。
 
 今回の問題ですと標準である vectorそのものににバグがない限り原因はユーザーのコードにあります。
 つまり、例えばもしこれがメモリ破壊系だとすると何者かが vectorの管理領域を壊している可能性があり、仮に今回は std::vectorを使わないことで回避しても、今度は別のところでいつか再発する可能性大です。

No title

これは非常に厄介な問題ですねe-260
アドバイスありがとうございます。

プログラムを実行する前に、
先に、思い当たる部分を色々と修正してみました。
------------------------------------------------------
・自作の参照数計測ポインタを、参考書に載っているものに変える
・主にvectorを使っている箇所のコード見直し
・その他ポインタ・添え字等で、範囲外の書き込みが無いか見直し
------------------------------------------------------
そして、今現在ですが、
リリースモードでも強制終了は発生しなくなりました。

vectorのresize,reserve,~vectorの使い方と
自作の参照数計測ポインタで、基底クラス型に派生型を突っ込んだりした時の挙動が原因だったのかもしれません。

現在は該当の箇所でvectorを使用しても強制終了しなくなったので、
恐らく原因は潰せたかと思われます。

内部的に壊れているけど、
たまたまエラーにならなかっただけ

という可能性も捨てきれないので、引き続きソースコードで怪しい部分は
書き方や、データの持ち方そのものを改良したりして
対応したいと思います。

ともかく、アドバイスありがとうございましたv-290
(すぐに顕在化しないバグは改めて面倒だと思いました。)

No title

 具体的な原因までたどり着いていないのはちょっと気になりますが、無事修正出来たようでなによりです。
「自作の参照数計測ポインタ」ってのがちょっと怪しそうですね。

 ちなみに標準ライブラリや boostの shared_ptr等を使わず自作しているのは何か理由があったのでしょうか?

No title

一応、問題は解決できました
ゲーム公開に向けて頑張りたいと思いますv-290

自作の参照数計測ポインタに関しては、
以前、演算子多重定義や、template等の練習の為に作っておいたものです。

それをそのまま使っていただけなので、
特に自作した参照数計測ポインタを使わないといけない
、と言うわけではなかったり
します。
(問題なく動作しているようだから、これでOKかな、程度。)
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。