“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:
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!