0

Debian Squeeze ARM システムへの 1 つのインストールを除いて、うまく動作する wxWidgets/GTK ベースのアプリケーションがあります。ユーザーがそのメインウィンドウをアクティブにしただけでクラッシュします。その理由を見つけるために、アプリケーションにシグナル ハンドラーを追加し、そのシグナル ハンドラーから libunwind を使用してクラッシュの原因を見つけました。正常に機能したテスト中に、ソフトウェアがたとえばアドレス 0x0 に書き込みを行うと、libunwind はそれが発生する関数を正しく指し示します。

しかし、クラッシュが予期せず発生するシステムの結果は少し奇妙で、私のアプリケーションの外部で発生しているようです。クラッシュの 1 つは名前のない関数 (ここでは libunwind は空の文字列を返します) から発生し、もう 1 つは「malloc_usable_size」というシステム関数によって引き起こされます。

それで...次に何をしますか?その問題を続ける方法がわからないので、すべてのアイデア、提案、またはその他のヒントを歓迎します...

4

1 に答える 1

0
  • ライブラリ関数によって返されたアイテムの構造体、ポインタ、メモリ位置について、バッファ オーバーランまたは一部のメモリの予期しない上書きをチェックします。
  • 使用しているライブラリに割り当てられたポインターについて、コード内の無効なポインター解放を確認します。
  • valgrind を使用することも役立つかもしれません。
于 2012-09-11T05:34:28.777 に答える