gdb: "Nessuna tabella dei simboli caricata"


93

Continuo a ricevere questo messaggio di errore quando provo ad aggiungere un punto di interruzione in gdb.

Ho usato questi comandi per compilare:

Ho anche provato "-ggdb" invece di "-g" e ricevo ancora quel messaggio di errore.

Quindi eseguo gdb:

In gdb:


Oh, intendevo main.o. L'ho aggiornato. Ho provato anche a usare "-ggdb" e continua a darmi lo stesso problema.
user994165

Mostraci esattamente come stai invocando gcc e gdb. Copia-incolla per evitare errori.
Piotr Praszmo

1
Ho aggiornato i miei comandi. Questo è davvero strano. Ha appena iniziato a funzionare. So che in precedenza stavo accedendo a gdb usando "gdb a.out" e ricevevo un messaggio di errore su a.out non esistente o qualcosa del genere. Poi sono passato al "file exec". Ora ho provato con a.out e dice "Questo GDB è stato configurato come" i486-linux-gnu "" e possono essere impostati i punti di interruzione.
user994165

oh duh stavo specificando il file sbagliato a.out. Ho seguito un tutorial su gdb senza pensare di cambiare il nome del file con il mio.
user994165

Risposte:


61

Prima di tutto, quello che hai è un programma completamente compilato, non un file oggetto, quindi elimina l' .oestensione. Ora, fai attenzione a ciò che dice il messaggio di errore, ti dice esattamente come risolvere il tuo problema: "Nessuna tabella dei simboli è caricata. Usa il comando" file " ."

O semplicemente passare il programma sulla riga di comando.


Scusa, sono un noob della GDB. Questa soluzione (e nessuna delle altre soluzioni su questa domanda) funziona con gdb su WSL su Windows, hai qualche suggerimento per me?
aderchox

142

Devi aggiungere un parametro extra -g, che genera informazioni di debug a livello di sorgente. Apparirà come:

Dopodiché puoi usare gdb in modo comune.


27
Nel mio caso, questa risposta ha risolto il problema per me, mentre la risposta accettata non ha fatto differenza.
Frankster

8

Ho lo stesso problema e ho seguito questo post , ha risolto il mio problema.

Segui i 2 passaggi seguenti:

  1. Assicurati che il livello di ottimizzazione sia -O0
  2. Aggiungi -ggdbflag durante la compilazione del programma

In bocca al lupo!


0

Ogni volta che gccsulla macchina di compilazione e gdb sulla macchina di prova sono presenti versioni differenti , potresti incontrare l' incompatibilità del formato debuginfo .

Per risolvere il problema, prova a eseguire il downgrade del formato debuginfo:

O abbinalo gdba quello gccche stai utilizzando.


0

Ho riscontrato questo problema questa mattina perché ho utilizzato lo stesso eseguibile in DIVERSI SO: dopo aver compilato il mio programma con gcc -ggdb -Wall test.c -o testnel mio Mac (10.15.2), ho eseguitogdb con l'eseguibile in Ubuntu (16.04) nel mio VirtualBox.

Correzione: ricompilare con lo stesso comando in Ubuntu, quindi dovresti essere bravo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.