コード例 #1
0
ファイル: control.cpp プロジェクト: dcashman/Coursework
VOID Handler(CONTROL_EVENT ev, VOID * v, CONTEXT * ctxt, VOID * ip, THREADID tid)
{
    std::cout << "tid: " << tid << " ";
    std::cout << "ip: "  << ip << " " << icount.Count() ;
#if defined(TARGET_IA32) || defined(TARGET_IA32E)
    std::cout << " [ with REP iterations " << icount.CountWithREP() << "] ";
#endif
    switch(ev)
    {
      case CONTROL_START:
        std::cout << "Start" << endl;
        break;

      case CONTROL_STOP:
        std::cout << "Stop" << endl;
        break;


      case CONTROL_THREADID:
        std::cout << "ThreadID" << endl;
        break;

      default:
        ASSERTX(false);
        break;
    }
}
コード例 #2
0
ファイル: controller.cpp プロジェクト: dcashman/Coursework
VOID Handler(CONTROL_EVENT ev, VOID * v, CONTEXT * ctxt, VOID * ip, THREADID tid)
{
    std::cerr << "tid: " << dec << tid << " ip: 0x" << hex << ip; 
    // get line info on current instruction
    INT32 linenum = 0;
    string filename;

    PIN_LockClient();

    PIN_GetSourceLocation((ADDRINT)ip, NULL, &linenum, &filename);
    
    PIN_UnlockClient();
    
    if(filename != "") 
    {
        std::cerr << " ( "  << filename << ":" << dec << linenum << " )"; 
    }
    std::cerr <<  dec << " Inst. Count " << icount.Count(tid) << " ";

#if defined(TARGET_IA32) || defined(TARGET_IA32E)
    std::cerr << " [ with REP iterations " << icount.CountWithREP() << "] ";
#endif

    switch(ev)
    {
      case CONTROL_START:
        std::cerr << "Start" << endl;
        if(control.PinPointsActive())
        {
            std::cerr << "PinPoint: " << control.CurrentPp(tid) << " PhaseNo: " << control.CurrentPhase(tid) << endl;
        }
        break;

      case CONTROL_STOP:
        std::cerr << "Stop" << endl;
        if(control.PinPointsActive())
        {
            std::cerr << "PinPoint: " << control.CurrentPp(tid) << endl;
        }
        break;

      default:
        ASSERTX(false);
        break;
    }
}