大きなピンツールを作成していますが、2 つの質問があります。
ツール (関連部分のみを以下に要約) は、特定の実行された命令のイメージ/ルーチンを識別できない場合があります。いつ/なぜそれが起こるか知っていますか?
このツール (Barnes-Hut ベンチマークをインストルメント化する場合) は、しばらく実行すると常にメモリ不足 (OOM) エラーで終了します (ただし、ベンチマークをスタンドアロンで実行すると、正常に完了します)。ピンを装備したアプリケーションの OOM エラーをデバッグ/追跡するには、どのツールを使用すればよいですか?
int main(int argc, char *argv[])
{
PIN_InitSymbols();
if( PIN_Init(argc, argv) )
{
return 0;
}
INS_AddInstrumentFunction(Instruction, 0);
PIN_StartProgram();
return 0;
}
VOID Instruction(INS ins, VOID *v)
{
INS_InsertPredicatedCall( ins,
IPOINT_BEFORE,
(AFUNPTR) handle_ins_execution,
IARG_INST_PTR,
.....);
}
VOID handle_ins_execution (ADDRINT addr, ...)
{
PIN_LockClient();
IMG img = IMG_FindByAddress(addr);
RTN rtn = RTN_FindByAddress(addr);
PIN_UnlockClient();
if( IMG_Valid(img) ) {
std::cerr << "From Image : " << IMG_Name( img ) << std::endl;
} else {
std::cerr << "From Image : " << "(UKNOWN)" << std::endl;
}
if( RTN_Valid(rtn) ) {
std::cerr << "From Routine : " << RTN_Name(rtn) << std::endl;
} else {
std::cerr << "From Routine : " << "(UKNOWN)" << std::endl;
}
}