0

ゲームの最後のバグを修正するのに苦労しています。このゲームは Irrlicht と Bullet の物理演算の Android ポートを使用しています。

OS X と Windows で同じコードを試してみましたが、問題はありませんでした。ただし、コードを Android NDK に移植すると、ランダムにクラッシュするようになりました。ほとんどのクラッシュは、libc.soおそらく nullpointerexception のようなものです。scenenode->remove()私たちのコードでは代わりに を使用しませんsmgr->addToDeletionQueue

クラッシュは非常にランダムであるため、次のステートメントで発生します。

  1. libc.so
  2. smgr->drawall()
  3. stepsimulation弾丸で。

レベルをアンロードして次のレベルをロードするか、レベルをリロードすると、90% の確率でエラーが発生します。最初にコンパイラを疑い、stlport を使用しました。ライブラリのヘルプをブーストする必要がありますか?

私が提供した情報は、問題を推測するのに非常に少ないと確信しています。しかし、同じゲーム コードが他のプラットフォームでも問題なく動作したため、コンパイラ関連の違いに関する疑問を解消したかっただけです。

シンプルmallocで、次にdeleteAndroid ndk が削除時にクラッシュします。そのため、修正に苦労しているのがコンパイラに関連するばかげた問題であるかどうかをよりよく理解したいと思いました。

4

1 に答える 1

0

この問題を数週間いじった後、私はついに問題の原因を見つけました。

このようなchar配列を初期化しました

char data = new char[10];

そして、通常どおり最後の文字を「\ 0」で埋めることを検討しました

data[10] = '\0';

nullpointer 例外をスローします。

Windows で同じコードを実行すると、この問題を突き止めることができました。Windowsでも、デバッガーを接続して実行すると問題は発生しませんでした。ただし、exeを直接開いてアプリを実行すると、クラッシュしました。そのため、問題を特定するために「Application Verifier」プログラムを使用する必要がありました。

于 2012-05-25T06:21:31.220 に答える