0;などと不親切な落とし方で処理しているのは味気ないので、落とす時にスタックトレースを表示させてみる。gdbがgcjに対応しているのでWindowsだとなくてもあまり問題ない。Monaでのデバッグには威力を発揮するだろう。†クラスを初期化するときにメソッドのリストを作って、スタックダンプと比較してみる。メソッドのリストはsms_gcのポインタマップを流用すれば簡単に作れる。†メソッドのリストを定義する。sms_gc_new_ptr_dict();_Jv_CreateJavaVM()で初期化する。sms_ptr_dict()とすると前述の未定義参照が発生する。`___gcj_personality_sj0'例外関連っぽい。きりがないので追求は保留。-fno-exceptionsで逃げられるけど、それをやっちゃうと例外は完全に諦めることになる。†メソッドのリストを参照する。_Jv_methodList;<clinit>を探すついでにメソッドの関数ポインタをリストに追加する。適当な名前で関数を実装。例外で落とす前に呼ぶ。†gcj/10のわざと落ちるサンプルで試してみる。実装はgcj/20に収録されているものを使っている。†gcj/JPekoeGUIに細工してわざと落としてみる。↓クラス名等のリファクタリングを行っています。