Il comando objdump Linux

Il comando objdump Linux

“L'objdump è un'utilità della linea di comando utilizzata per visualizzare informazioni su un oggetto su sistemi simili a unix. Il comando, quando usato, ottiene le informazioni di un file oggetto anche quando non si dispone del codice sorgente. Pertanto, può essere uno strumento di debug per i file di oggetti, soprattutto quando si lavora con i programmi di compilatore."

Questa guida copre i diversi usi del comando objdump con esempi. Controlla.

Usi del comando objdump

L'objdump ha 6 scopi principali:

  • Per eseguire il debug del file dell'oggetto
  • Recupero intestazioni di file
  • Ottenere il bfdname
  • Recupero di intestazione dell'archivio
  • Ottenere offset di un file
  • Smontaggio di un file oggetto

La sua sintassi di base è:

$ objdump

Ci sono molte opzioni da utilizzare con il comando objdump e puoi visualizzare la pagina di aiuto per visualizzarli.

$ objdump - -help

Questo articolo utilizzerà /bin /echo come file di oggetti per i nostri esempi. Tuttavia, è possibile utilizzare altri file di oggetti come i programmi C. L'uso è sempre lo stesso.

Lavorare con Objdump

Visualizzare le intestazioni dei file del file oggetto

L'opzione -f, se utilizzata con il comando objdump, recupera tutte le intestazioni di file associate a un determinato file di oggetti, come mostrato di seguito. Ricorda, stiamo usando /bin /echo, che è un file eseguibile binario per il comando Echo come oggetto in questo caso.

$ objdump -f /bin /echo

L'output risultante che visualizza le intestazioni del file sarà:

È possibile notare il formato e le intestazioni del file oggetto dall'output.

Per ottenere le intestazioni di file specifiche dell'oggetto

Se è necessario visualizzare intestazioni di file specifiche per il file oggetto che si sta utilizzando, utilizzare l'opzione -p.

$ objdump -p /bin /echo

Visualizza il contenuto dell'intestazione della sezione

Ogni file ha intestazioni di sezione diverse. Se è necessario visualizzare il contenuto di ciascuna delle intestazioni della sezione, utilizzare l'opzione -H.

$ objdump -h /bin /echo

In questo caso, l'output era:

Dall'output, è possibile notare che le diverse intestazioni della sezione sono numerate da 1 e ogni intestazione della sezione ha le sue dimensioni, VMA, LMA, file OFF e ALGN.

Misurare: rappresenta la dimensione della sezione caricata.

VMA: rappresenta l'indirizzo di memoria virtuale

LMA: rappresenta l'indirizzo di memoria logica

File off: rappresenta l'offset della sezione dall'inizio del file.

Algn: rappresenta l'allineamento della sezione.

Gli altri dettagli, come alloc, dati, lettura e contenuti, sono le diverse flag che rappresentano se la sezione è leale o viene caricata.

Visualizza le informazioni di tutte le intestazioni

Puoi anche ottenere tutte le informazioni sulle intestazioni nel file dell'oggetto. Per fare questo, usa l'opzione -x.

$ objdump -x /bin /echo

In questo esempio, l'output parziale per il comando sopra sarà:

Per ottenere il contenuto dell'assemblatore della sezione eseguibile

Per ottenere il contenuto dell'assemblatore della sezione eseguibile, utilizzare l'opzione -D.

$ objdump -d /bin /echo

In questo esempio, l'output parziale è:

L'output viene diviso in sezioni eseguibili e per ciascuno, il contenuto dell'assemblatore viene visualizzato come mostrato. Ad esempio, puoi vedere la sezione ".INIT ”e il contenuto dell'assemblatore corrispondente di seguito prima di procedere alla sezione eseguibile successiva del file oggetto.

Ottieni il contenuto dell'assemblatore di ogni sezione

Il -D visualizza il contenuto dell'assemblatore solo delle sezioni eseguibili. Tuttavia, utilizzare l'opzione D se è necessario il contenuto per tutte le sezioni di file.

$ objdump -d /bin /echo

Per ottenere tutti i contenuti di tutte le sezioni

Per questo, usa l'opzione -s

$ objdump -s /bin /echo

L'output per tutte le sezioni e il loro contenuto sarà:

Visualizza le informazioni sul debug

L'opzione -g visualizza tutte le informazioni di debug disponibili del file oggetto.

$ objdump -g /bin /echo

Visualizza il contenuto della tabella dei simboli

Se il file oggetto ha una tabella dei simboli, è possibile visualizzare il suo contenuto utilizzando l'opzione -t

$ objdump -t /bin /echo

Conclusione

Un comando objdump è uno strumento utile per i programmatori che si occupano di compilatori. Il comando ha più usi e abbiamo trattato l'uso di esempio più comune. Puoi anche controllare la sua pagina Man per maggiori dettagli su come utilizzare lo strumento. Inoltre, il comando può diventare un po 'schiacciante. Quindi, continua a praticarlo di più. Ti auguro il meglio!