-1

マルチスレッドアプリケーションの1つのスレッドがVxWorksでクラッシュしていることがわかりました。デバッグ情報がありません。詳細な分析で、グローバルメモリアドレスの値が変更されたためにクラッシュが発生していることがわかりました。

このグローバルメモリアドレス(関数へのアドレスです。関数ポインタを使用しています)は、ヒープ内の特定のアドレス位置に格納されています。このグローバルメモリアドレス自体が2減少していることがわかりました。これにより、誤ったアクセスとロード命令エラーが発生します。

これはランダムに発生します。しかし、アドレス値が2減少する原因については、本当に驚いています。

任意の方向への推測、アイデア、またはポインタが役立つ場合があります。

4

1 に答える 1

4

一部の CPU にはハードウェア ブレークポイントがあり、メモリ ロケーションが書き込まれたときにブレークできます。その場所が読み書きされたときに割り込みを行うように CPU を設定し、たまたまどの関数がそれを実行しているかを確認したときにスタックを調べます。

于 2010-05-04T10:31:14.970 に答える