Stack-Trace-Typ
Stack-Trace-Typ
Eine Variable des Typs stktrace_t wird verwendet, um den Rückgabewert der ProbeVue -Funktion get_stktracezu speichern, die den aktuellen Stack-Trace zurückgibt. Der zurückgegebene Stack-Trace ist der Stack-Trace des aktuellen Threads. Diese Variable kann auch als Schlüssel oder als Wert in einem assoziativen Array gespeichert werden. Der Typ stktrace_t ist ein abstrakter Datentyp und diese Variable kann nicht direkt mit den C-Standardoperatoren für uninary oder binär verwendet werden. Intern ist diese Variable ein Array von Langlebigkeit ohne Vorzeichen.
Vue unterstützt die folgenden Merkmale und Operationen für die Stack-Trace-Typvariablen:
Deklaration der Stack-Trace-Typvariablen
stktrace_t st; // st is a stktrace_t variable.
st = get_stktrace(5); // Get the stack trace up to five levels.
a_st[0] = get_stktrace(-1); // Get the stack trace up to the extent possible and
// store in the associative array a_st as value.Die Qualifikationsmerkmale signed, unsigned, register, static, auto, thread, kernel und const werden für die Variablen des Typs stktrace_t nicht unterstützt.Zuordnungsoperation
stktrace_t t1, t2; // Declares two stack trace variables.
t1 = get_stktrace(); // Get the current stack trace in t1.
t2 = t1 ; // Get the content of t1 into t2.Vergleichsoperation
if( t1 == t2) // comparing two stktrace_t type variables.
printf(“Entries are similar”);
else
printf(“Entries are not similar”);Stack-Trace-Typvariable drucken
Die Variable stktrace_t kann mithilfe der Formatkennungen %t oder %T in der printf -Funktion von Vue ausgegeben werden. Die Ausgabe ist der symbolische Stack-Trace des Threads, der in der Variablen gespeichert wird. Das Symbol mit der Adresse (Symbol plus Adresse) wird nur ausgegeben, wenn der Thread, der der Variablen stktrace_t entspricht, aktiv ist und wenn die Formatkennung %t zum Drucken des Stack-Trace verwendet wird. Andernfalls wird nur der Stack-Trace als Adresse für die Variable ausgegeben.
stktrace_t t1;
t1 = get_stktrace (5);
printf (“%t”, t1); // Displays the stack trace stored in variable t1.
printf (“%T”, t1); // Displays the stack trace stored in variable t1 with raw addresses.
a[__tid] = t1; // Store t1 as value in an associative array a.
print(a) ; // Print associative array a, whose value
// type is stktrace_t variable.
Einschränkungen für Stack-Trace-Typvariable
- Das Array der Variablen stktrace_t kann nicht deklariert werden.
- Die Variablen stktrace_t können nicht als Element einer Struktur oder Union verwendet werden.
- Der Zugriff auf einzelne Einträge des Stack-Trace ist nicht zulässig.
- Die Operationen (Zuordnung, Vergleich und Ausgabe) der Variablen des Typs stktrace_t werden im Testmonitor systrace nicht unterstützt.