やっかいなバグ
やっかいなバグ
・再現条件が分からないバグ
・再現はするが、原因がわからないバグ
・再現して原因も判明したが、解決方法がわからないバグ
一応、解決しづらい順番に並べたつもり。
再現条件が分からないバグは更に2通りあって
・原因は分かるけど、その原因となる現象が発生する条件が分からない。
・原因も発生条件も分からない
実は、船さん提案の気球に相当する機能の実装中に
このやっかいなバグが出てきた。
現象としては、初音ミク冒険記が起動しているにも関わらず
(BGMは鳴っているし、デバッグのログやデバッグコンソールの出力はされている)
初音ミク冒険記のゲームウィンドウが表示されない
というものだった。
ここ2~3日は、必ず再現はするが、原因がわからないバグだった。
が、ようやく原因が判明した。
実は、前回の公開から、現在までの間に初音ミク冒険記を起動した後に
ゲームウィンドウの位置を移動して、終了した時に
その時の位置を覚えておいて、次回起動時に前回終了時の位置に表示される
というのを作っていた。
これは、初音ミク冒険記の開発ツールとかを起動している時に
ウィンドウが重ならないように配置した後、その場所を覚えて欲しくて作った。
で、この場所を保存する処理で、なぜか、画面上ありえない座標が保存されていて
(具体的な数値は覚えていないが、なんとなくINTの最大値のような値だった気がする)
起動時にどうやっても見ることができない画面位置に
ゲームウィンドウを表示しているということが判明した。
位置を保存したファイルを手で書き換えることで対処できたんだけど
これだと対処療法で、根本解決にはならないので
いつ発生するか分からない。
本当は、手直しする前におかしなファイルの状態を退避しておいて
調査しやすくしておくべきだったんだが・・・
そして、座標がおかしな状態になるってのは、実はこれまでも
他のおかしなパターンが存在している。
それも再現方法が分かんない。
たぶん、どこかでメモリ破壊を起こしていそうなんだが
CppCheckでもエラーが出てないので、そこからも調べられずにいる。
仕方が無いのでtracのチケットとして分かる範囲の情報を登録して
次の発生時に更に細かく情報を書いていくって作戦を取っている。
発生した時のハードコピーとか
次に発生した時にどんな情報を知りたいのかなどを登録している。
実はセーブデータにコメントを付ける機能を作ったのは
どのセーブデータが、どんな状況で保存したのかを
メモしておくためだったりするのです。
うーん、何か、この手のバグは解決まで行かなくて困るんだよなぁ。
| 【固定リンク】 | 【コメント (2)】 | 【トラックバック (0)】
このエントリーへのリンク
トラックバック
この記事へのトラックバックの一覧です: やっかいなバグ:
コメント
このブログの新着コメントをRSSリーダに登録する為のxmlアイデア
ウインドウ 狂ったときに、タスクバー を使って 座標をリセット出来ないでしょうか?。
例えば、タスクバーを右クリックしてメニューを開いて座標を0払いするボタンを付けたり、専用のショートカットキー を作る(元ネタ 他のゲームで、グラフィックが狂ったとき、元に戻すショートカットキーが有ったから) とか、どうでしょうか?。
投稿者: 船 (2015/01/20 22:36:41)
To:船さん
> 例えば、タスクバーを右クリックしてメニューを開いて
> 座標を0払いするボタンを付けたり、
> 専用のショートカットキーを作る
>(元ネタ 他のゲームで、グラフィックが狂ったとき、
> 元に戻すショートカットキーが有ったから) とか、
> どうでしょうか?
アイディアありがとうございます。[→◇←]
実は、このアイディアを検討していて
実際に実装しようと思っていました。
が、もう少し調査をしてみたところ
どういう時に座標が狂うかが判明したので
そちらの対処を行うことにしました。[・_←]
近いうちに、このへんのことを記事にしようと思ってます。
投稿者: かげさん (2015/01/23 21:40:23)