인텔 핀을 사용하여 프로파일 러를 쓰고 있습니다. 도구 프로파일은 각 루틴의 전후에 계측 코드를 추가하여 실행 파일에서 기능합니다. 각 루틴의 경우, I는 BeforeCall 및 AfterCall이Intel Pin : RTN 수준 분석에서 '스레드 ID 인수가 항상 0입니까?
VOID BeforeCall(unsigned int funcID,THREADID threadID);
VOID AfterCall(unsigned int funcID,THREADID threadID);
같이
RTN_InsertCall(routine, IPOINT_BEFORE, (AFUNPTR)BeforeCall,
IARG_UINT32, RTN_Id(routine),
IARG_THREAD_ID,
IARG_END);
RTN_InsertCall(routine, IPOINT_AFTER, (AFUNPTR)AfterCall,
IARG_UINT32, RTN_Id(routine),
IARG_THREAD_ID,
IARG_END);
아래로 핀에 콜백을 추가하는 항상 이러한 콜백에 변수 '이을 threadID'제로의 값을가집니다. 계측중인 응용 프로그램에는 개의 스레드가 있습니다. 실행 중입니다. Pin과 함께 제공되는 예제는 스레드 ID에 액세스하는 동일한 방법을 사용합니다. 이 구현이 맞습니까? 그렇지 않다면, 루틴이 실행되고있는 스레드의 실제 스레드 ID를 어떻게 잡아낼 수 있습니까?