agosto 12, 2026

Come si genera un backtrace valido con GDB su FFmpeg da allegare a un ticket di bug?

| No comment

How to use FFMPEG

Per generare un backtrace valido accettato dagli sviluppatori di FFmpeg, l'elemento fondamentale è utilizzare il binario non strippato (ffmpeg_g), che conserva i simboli di debug necessari a risalire alla riga esatta di codice sorgente che ha causato il crash.

1.Individua il binario con i simboli di debug (ffmpeg_g):Usa ffmpeg_g anziché il normale binario ffmpeg.

Se hai compilato FFmpeg dai sorgenti, nella cartella di build troverai due eseguibili:

  • ffmpeg: il binario alleggerito da usare in produzione.

  • ffmpeg_g: il binario completo con i simboli di debug.

Se usi i pacchetti di distribuzione (es. Ubuntu/Debian): Assicurati di aver installato i pacchetti dei simboli di debug (es. sudo apt install ffmpeg-dbgsym o ffmpeg-debuginfo).

2.Avvia GDB caricando FFmpeg e i relativi argomenti:Passa il comando esatto che genera il problema.

Lancia GDB passando il binario ffmpeg_g e il comando completo racchiuso tra gli argomenti:

Bash

gdb --args ./ffmpeg_g -v 9 -loglevel 99 -i input_corrotto.mp4 -f null -

3.Esegui il programma all'interno del debugger:Digita 'run' nel prompt di GDB.

Al prompt (gdb), avvia l'esecuzione del programma:

Plaintext

(gdb) run

Il processo si fermerà automaticamente non appena si verifica il crash, restituendo un messaggio come Program received signal SIGSEGV, Segmentation fault.

4.Genera il Backtrace avanzato:Esegui i comandi richiesti dagli sviluppatori.

Quando il programma si blocca sul crash, invia i seguenti comandi per ottenere le informazioni su tutti i thread e le variabili locali:

Plaintext

(gdb) thread apply all bt full

Se il crash avviene in un'istruzione di decodifica o filtro specifica, è utili estrarre anche il disassembly della funzione corrente:

Plaintext

(gdb) disassemble
Metodo rapido (Azione singola da riga di comando)

Puoi automatizzare l'intero processo ed esportare il report direttamente in un file di testo .log da allegare a Trac con un unico comando batch:

Bash

gdb -batch \
    -ex "run" \
    -ex "thread apply all bt full" \
    -ex "disassemble" \
    --args ./ffmpeg_g -v 9 -loglevel 99 -i input_corrotto.mp4 -f null - > backtrace.log 2>&1

Questo comando esegue FFmpeg in GDB, cattura il crash, estrae lo stack trace di tutti i thread e salva l'output completo all'interno di backtrace.log.

Trovato questo articolo interessante? Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook o semplicemente premi "+1" per suggerire questo risultato nelle ricerche in Google, Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie! CONDIVIDI SU!

stampa la pagina

Nessun commento:

Posta un commento

Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.

Ultimi post pubblicati

Recent Posts Widget

Archivio

Etichette

Ubuntulandia in Pinterest

Post Più Popolari