Trace-Werkzeuge kehren des Innerste des Prozessors nach außen Prozessoren umkrempeln

Viele Software-Fehler treten erst auf, wenn ein Programm in Echtzeit auf dem Prozessor abläuft. Um diese Fehler zu finden und zu beheben, muss der Prozessor quasi umgekrempelt werden und seine Interna preisgeben. Doch das ist bei modernen Hochleistungsprozessoren gar nicht so einfach. Eine neue Generation von Trace-Tools macht es durch Kunstgriffe trotzdem möglich.

Trace-Werkzeuge kehren des Innerste des Prozessors nach außen

Viele Software-Fehler treten erst auf, wenn ein Programm in Echtzeit auf dem Prozessor abläuft. Um diese Fehler zu finden und zu beheben, muss der Prozessor quasi umgekrempelt werden und seine Interna preisgeben. Doch das ist bei modernen Hochleistungsprozessoren gar nicht so einfach. Eine neue Generation von Trace-Tools macht es durch Kunstgriffe trotzdem möglich.

void BillingTimer(int i)

{
int TimeOfDay;

Time OfDay = GetSystemTimer();

// get present time

WaitForSemaphore(globalsem);// lock access to array
ImportantArray[i] = TimeOfDay;// record start time

ReleaseSemaphore(globalsem);
 

// unlock access
DoTaskToBeTimed();
 
// time the task
TimeOfDay = GetSystemTimer();// get finish time
WaitForSemaphore(globalsem);
ImportantArray[i+1] = TimeOfDay;

// store in array
ReleaseSemaphore(globalsem);

}

Einem Programm-Code kann man entnehmen, welche Instruktionen ausgeführt werden, aber viele andere Informationen liefert er nicht, z.B. welcher Speicherbereich belegt wird, wie das Programm mit unerwarteten Daten umgeht, was im Falle eines DMA-Ereignisses passiert u.v.m.