no link
2004年09月11日 03:01:20
今日は一日、i-appliの通信対戦のプログラムで潰れた。どうしてもエラーが出る場所があって、理由が不明。色々と試して行くと、どうもプログラムを走らせているDocomoのエミュレータの問題のような気が……。
505向けのエミュレータで問題がないのに、504向けだと落ちる。エラーが出ている場所を特定しても、そんな挙動をおこさない場所。それも、デバッグのためにソースの分量を変えると、エラーが出るタイミングが変わったりする。
半日ぐらい消去法で試して行った結果、理由が分かった。原因は「定数の数」。完全に盲点。というか、そんなんでエラーが出るのは想定外。
リリース用のソースコードは、独自の定数埋め込みツールを使って数値は全部実数化しているのだが、通常のデバッグ時は、素の定数が大量にソース中にある。
その定数をエミュレータが内部でクラス展開しているのだが、どうも管理がうまくいっていないようだ。もしくは、メモリー量が足りないのか。だが、見かけのメモリー量は問題ない値が返ってきている……。ともかく、宣言している定数の数が多過ぎると、内部的に処理を圧迫して落ちるようだ。
505向けのエミュレータでは同じ問題が際限しなかったので、どうも504向けエミュレータ固有の問題っぽい。
眠い一日だった。というか、時間が勿体無くて馬鹿らしかった。トホホ。