Ricerca

7.8. Compilatori e strumenti di sviluppo (traduzione automatica)

download PDF

Funzioni sintetiche generate da GCC Confuse SystemTap

L'ottimizzazione GCC può generare funzioni sintetiche per copie parzialmente in linea di altre funzioni. Strumenti come SystemTap e GDB non possono distinguere queste funzioni sintetiche da quelle reali. Di conseguenza, SystemTap può posizionare le sonde sia sui punti di ingresso di funzioni sintetiche che reali, e quindi registrare più colpi di sonda per una singola chiamata di funzione reale.

Per ovviare a questo problema, gli script SystemTap devono essere adattati con misure quali il rilevamento della ricorsione e la soppressione delle sonde relative a funzioni parziali in linea. Per esempio, uno script

probe kernel.function("can_nice").call { }

può cercare di evitare il problema descritto di seguito:

global in_can_nice%

probe kernel.function("can_nice").call {
  in_can_nice[tid()] ++;
  if (in_can_nice[tid()] > 1) { next }
  /* code for real probe handler */
}

probe kernel.function("can_nice").return {
  in_can_nice[tid()] --;
}

Si noti che questo script di esempio non tiene conto di tutti gli scenari possibili, come i kprobes mancanti o kretprobes, o la vera e propria ricorsione prevista.

(BZ#1169184)

Lo ltracestrumento non segnala le chiamate di funzione

A causa dei miglioramenti all'indurimento binario applicato a tutti i componenti RHEL, lo ltracestrumento non è più in grado di rilevare le chiamate di funzione nei file binari provenienti dai componenti RHEL. Di conseguenza, l'ltraceoutput è vuoto perché non segnala alcuna chiamata rilevata quando viene utilizzato su tali file binari. Al momento non esiste una soluzione alternativa.

Come nota, ltracepuò segnalare correttamente le chiamate in file binari personalizzati costruiti senza i rispettivi flag di tempra.

(BZ#1618748, BZ#1655368)

Red Hat logoGithubRedditYoutubeTwitter

Formazione

Prova, acquista e vendi

Community

Informazioni sulla documentazione di Red Hat

Aiutiamo gli utenti Red Hat a innovarsi e raggiungere i propri obiettivi con i nostri prodotti e servizi grazie a contenuti di cui possono fidarsi.

Rendiamo l’open source più inclusivo

Red Hat si impegna a sostituire il linguaggio problematico nel codice, nella documentazione e nelle proprietà web. Per maggiori dettagli, visita ilBlog di Red Hat.

Informazioni su Red Hat

Forniamo soluzioni consolidate che rendono più semplice per le aziende lavorare su piattaforme e ambienti diversi, dal datacenter centrale all'edge della rete.

© 2024 Red Hat, Inc.