ピンを使用した例外処理機能を実装しています。私の例外処理コードでは、特にメモリアクセスエラー、たとえばメモリ読み出しエラーとメモリ書き込みエラーを検索します。上記UNKNOWN
はまだ私のコードの例外処理におけるメモリアクセスタイプのピン番号
mov eax, [ebx] <--- ebx = 0x01, which makes the read operation failed
FAULTY_ACCESS_TYPE
:本当に私を混乱させる何
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);
は、典型的なメモリは、以下のアクセスエラーを読んでもために、ということである:私は以下のいくつかのコードを書きました。 definitionによれば、私はアクセスタイプがFAULTY_ACCESS_READ
であるべきだとします。
ここに何か間違っていますか?
こんにちは、お返事ありがとうございました!私は 'PIN_GetExceptionClass' APIを試して、' EXCEPTCLASS_ACCESS_FAULT'戻り値を得ました。だから、ピンは例外の正しい理由を理解することができるようです... – computereasy
あなたはようこそ!あなたのリンクされたAPIドキュメントに書かれているように、 'EXCEPTCODE_ACCESS_MISALIGNED'は' EXCEPTCLASS_ACCESS_FAULT'の一部ですが、アクセスタイプコードは何であるかは指定していません。私がこのような "エラーコード" - > "エラークラス" APIに直面したときはいつも、両方を印刷/処理することが有用であることがわかっています。 –