Quanto codice stai testando ? (5)

🧭 Dove eravamo rimasti Bentornati a questa nuova tappa del nostro viaggio nella misurazione della test coverage sui binari precompilati! Nel quarto capitolo abbiamo introdotto funkoverage, uno strumento nativo ad alte prestazioni basato su eBPF, che sfrutta uprobe_multi per catturare l’ingresso nelle funzioni in GNU/Linux con un overhead inferiore al 2%. Fino ad ora, le librerie statiche venivano scoperte all’installazione analizzando i binari con ldd (tramite le dipendenze DT_NEEDED). Tuttavia, c’era un enorme elefante nella stanza: dlopen(). Alcuni dei software più complessi e modulari al mondo, come i web server con moduli dinamici, le applicazioni enterprise basate su plugin e i database multi-protocollo, caricano le proprie dipendenze a runtime, al volo. Poiché queste librerie non sono dichiarate nell’header ELF DT_NEEDED, risultano invisibili a ldd durante l’installazione. Oggi diamo la caccia a questo fuggiasco tecnologico: scopriremo come lo abbiamo risolto con una strategia elegante ed estremamente scalabile, la strumentazione eBPF JIT event-driven, e la metteremo alla prova sul campo con binari di produzione reali e non modificati come Nginx e OpenSSL! ...

11 agosto 2026 Â· Andrea Manzini

Quanto codice stai testando? (3)

▶️ Intro: Let Me Be Nel post precedente abbiamo continuato il nostro viaggio affrontando uno scenario più complesso, utilizzando un mix di gdb e valgrind per tracciare l’esecuzione di tutte le funzioni all’interno di un dato binario. Questa volta reggetevi forte perché aumenteremo notevolmente la complessità. Ci immergeremo nell’analisi di basso livello ed esploreremo come utilizzare Intel PIN, un potente framework di strumentazione dinamica per manipolare e ispezionare il codice eseguibile a runtime. ...

17 giugno 2025 Â· Andrea Manzini

Quanto codice stai testando? (2)

▶️ Introduzione Nel post precedente abbiamo iniziato il nostro viaggio con uno scenario molto semplice, e abbiamo utilizzato una comoda funzionalità del linguaggio di programmazione Go per misurare quale percentuale del programma target viene esercitata dal nostro test. Questa volta sperimenterò una Proof of Concept su come ottenere una stima della metrica di copertura del codice di test per un normale programma binario, senza alcuna ricompilazione. In questo esempio faremo finta che il nostro compito sia scrivere test di integrazione per il famoso programma gzip, e cercheremo di misurare i progressi che stiamo facendo riguardo alla copertura dei nostri test. ...

30 marzo 2025 Â· Andrea Manzini

Il ftrace del kernel Linux

👣 Introduzione Gli strumenti di tracciamento sono piuttosto popolari nell’ecosistema Unix/Linux; ad esempio, nello userspace abbiamo ltrace per tracciare le chiamate di libreria dei programmi e strace per andare più a fondo e ispezionare l’uso delle syscall. Una delle molte caratteristiche che il kernel Linux offre dal 2008 (poi evolutasi nel tempo) è ftrace, che permette diversi tipi di tracciamento a runtime. Sebbene non sia flessibile come la tecnologia eBPF, può rivelarsi utile in alcune occasioni e non richiede un vero e proprio linguaggio di programmazione. ...

1 ottobre 2024 Â· Andrea Manzini

This site does not use cookies or collect any personal data. © 2026 Andrea Manzini.