2011-12-09 8 views
1

wince 5.0アームデバイスエミュレータでプログラムを実行しているときに、常にデータの不整列が報告されます。例外は次のようなものですwinceデータの不一致

Data Abort: Thread=8db5e6f4 Proc=8c24cb60 'test.exe' 
AKY=00001001 
PC=03f91cfc(coredll.dll+0x00021cfc) 
RA=1a12a988(test.exe+0x0011a988) 
BVA=0000001e 
FSR=00000001 

マップファイルによると、PCの機能はCeHeapCreate()です。リターンアドレスはコードセクションにはなく、おそらくヒープにあります。 アプリケーションベリファイアを実行してメモリの問題を検出すると、データアボートが消えてプログラムが正常に実行されます。 何が原因で、このケースをデバッグするのですか?

答えて

1

test.exeが作成しているcoredllへの呼び出しを確認する必要があります。リターンアドレス(RA)は、あなたのアプリのどこからコールが来ているかを示しています。ちょうどdecode it back to a line of codeでなければなりません。 WAGは、整列されていないAPI呼び出しに構造体またはバイト配列を渡すことです。コードなしでは、われわれは推測するしかありません。

+0

コードセクションとデータセクションの合計長は約0xB0000です。そのため、RA 0x11a988はそのアドレス空間を超えています。コードを変更すると、データの中断はしばらく消えてしまいますが、別の場所に再び表示されることがあります。 – Bergenst

+0

スタティックはどうですか?それらは別の場所に割り当てられます。 – ctacke