2010-01-31 12 views

risposta

25

Solo supposizioni, ma _DictionaryTree_getNodeList in un altro file che non è stato compilato con -g?

+1

Sì, l'ho capito prima ancora di aver letto la tua risposta. Buona ipotesi;) –

+8

Se stai compilando più file, è meglio usare un Makefile e aggiungere -ggdb nei flag di opzione gcc. –

+0

@Manav MN sì, questo è quello che ho, ma ho due comandi diversi - uno per la compilazione e uno per il collegamento e ho dimenticato di aggiungere il flag a quello per la compilazione (che in realtà è l'unico di cui avevo bisogno, I indovina). –

9

Ho avuto lo stesso problema ma nel mio caso non è stato sufficiente aggiungere -g al compilatore, quindi ho utilizzato -ggdb come suggerito da Manav.

0

Ho avuto lo stesso problema, quando ho compilato un file usando l'opzione -g e senza l'opzione -g. Per uno dei file, il gdb ha mostrato numero di linea senza alcuni problemi (anche quando è stato compilato senza l'opzione-g) .. E per l'altro file, ho dovuto parlare in modo esplicito bandiera -g ...

Qualsiasi idea sul caricamento del file di origine in fase di esecuzione nel GDB con riferimenti incrociati sarebbe una buona soluzione ... mappando le linee agli indirizzi: D.

1

Avevo anche questo messaggio di errore ma la fonte del mio problema era diversa. Se qualcuno ha ancora problemi, assicurati di avere #include <stdio.h> nel tuo file, con le parentesi appropriate intorno a stdio.h (il messaggio di testo non verrà visualizzato se lo avessi intorno a stdio.h).

4

Nel mio caso, il problema era la differenza di versione tra gcc e gdb.

Dopo l'atterraggio dalla ricerca e nessuna di queste risposte si adattava alla mia situazione, ho scoperto che (a causa di alias/symlink/Makefile/variabili di ambiente) stavo accidentalmente usando un GCC più recente (4.8.x) e un GDB precedente (7.2). Il passaggio a una versione più recente di GDB (7.8) ha risolto il problema. Per qualche motivo, l'utilizzo di un GCC più recente e di un GDB precedente non ha funzionato.

+1

... ma (solo) ora vedo che le risposte precedenti ad altre domande quasi identiche hanno questa risposta - ad es., [questo] (http://stackoverflow.com/a/20493816/3562032) e [questo] (http://stackoverflow.com/a/18408197/3562032). Quest'ultimo include informazioni su * perché * (incompatibilità DWARF). Upvotes tutto intorno! –

0

Ho riscontrato questo problema perché stavo eseguendo il debug di una libreria condivisa senza indicare LD_LIBRARY_PATH per correggere la posizione con endstat di debug.

è possibile utilizzare

export LD_LIBRARY_PATH=<location of the debug build of the .so file>:$LD_LIBRARY_PATH 

Speriamo che questo sia utile a qualcuno

0

ho avuto lo stesso problema, nonostante ero già compilazione con -g2. Cambiarlo in -g3 ha fatto il trucco.

Problemi correlati