Pin を使用して例外処理機能を実装しています。私の例外処理コードでは、特にメモリアクセスエラー、たとえばメモリ読み取りエラーとメモリ書き込みエラーを検索します。私は以下のコードを書きました:
BOOL catchSignalTest(THREADID tid, INT32 sig, CONTEXT *ctx, BOOL hasHandler, const EXCEPTION_INFO *pExceptInfo, VOID *v)
{
ADDRINT exptAddr = PIN_GetExceptionAddress(pExceptInfo);
ADDRINT exptAddr = PIN_GetExceptionAddress(pExceptInfo);
FAULTY_ACCESS_TYPE ty = PIN_GetFaultyAccessType(pExceptInfo); <----- ty is unknown type!!!
}
.....
PIN_InterceptSignal(SIGSEGV, catchSignalTest, 0);
私を本当に混乱させるのは、以下の典型的なメモリ読み取りアクセスエラーであっても、それです:
mov eax, [ebx] <--- ebx = 0x01, which makes the read operation failed
上記FAULTY_ACCESS_TYPE
の私のコードはまだUNKNOWN
です。その定義によると、アクセス タイプはFAULTY_ACCESS_READ
.
私はここで何か間違ったことをしていますか?