Tipo de rastreio de pilha
Pilha de rastreio de pilha
Uma variável do tipo stktrace_t é usada para manter o valor de retorno da função ProbeVue get_stktrace, que retorna o rastreio de pilha atual. O rastreio de pilha retornado é o traço de pilha do fio atual. Esta variável também pode ser armazenada em uma matriz associativa seja como uma chave ou como um valor. O tipo stktrace_t é um tipo de dado abstrato, e esta variável não pode ser usada diretamente com as operadoras padrão C unárias ou binárias. Internamente, esta variável é uma matriz de anseios não assinados.
O Vue suporta as seguintes características e operações para as variáveis de tipo de rastreio de pilha:
Declaração de tipo de rastreio de pilha de pilha
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.As qualificadoras assinadas, não assinadas, registram, estática, auto, thread, kernel e const não são suportadas para as variáveis do tipo stktrace_t .Operação de Designação
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.Operação de Comparação
if( t1 == t2) // comparing two stktrace_t type variables.
printf(“Entries are similar”);
else
printf(“Entries are not similar”);Imprimir a variável de tipo de rastreio de pilha
A variável stktrace_t pode ser impressa usando os especificadores de formato %t ou %T na função printf de Vue. A saída é o rastreio de pilha simbólica do fio que é salvo na variável. O símbolo com o endereço (símbolo mais endereço) são impressos apenas quando a thread que corresponde à variável stktrace_t está no estado de execução e quando o especificador de formato %t é usado para imprimir o rastreio de pilha; caso contrário apenas o rastreio de pilha como o endereço é impresso para a variável.
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.
Limitações para a variável de tipo de rastreio de pilha
- A matriz da variável stktrace_t não pode ser declarada.
- As variáveis stktrace_t não podem ser usadas como membro de uma estruturação ou de um sindicato.
- O acesso de qualquer entrada individual do rastreio de pilha não é permitido.
- As operações (atribuição, comparação e impressão) das variáveis do tipo stktrace_t não são suportadas na análise de systrace.