Ho problemi a eseguire il debug di un programma C++ in Eclipse (l'ultimo RC di Helios, aggiornato con l'ultimo CDT da se stesso) su OSX.Errore "Nessuna fonte disponibile per main()" durante il debug di C++ semplice in Eclipse con gdb
Il programma è molto semplice (esenzialmente la Lezione 2 delle esercitazioni OpenGL di NeHe), costituito da un file cpp e, utilizzando i framework OpenGL e Cocoa, e il collegamento con libSDL.a e libSDLmain.a.
La struttura del progetto è molto semplice: i file di origine si trovano in una sottodirectory del progetto chiamata src/e l'eseguibile è incorporato nella directory radice del progetto.
Il problema è che ogni volta che provo ad aggiungere punti di interruzione e debugarlo, i punti di interruzione sembrano essere colpiti perfettamente ma non viene visualizzata alcuna sorgente - invece ottengo solo un errore "Nessuna fonte disponibile per main()" nella finestra del codice .
I flag del compilatore hanno ottimizzazioni impostate su none e sia il compilatore che il linker hanno il flag di simboli di debug impostato (-g).
L'impostazione di debug in Eclipse è impostata su "Progredire spawn standard" e il debugger è impostato su "gdb".
Ora la cosa più strana è che se provo a eseguire il debug dell'eseguibile stesso esatto - vale a dire. la stessa identica che è stata costruita da Eclipse - usando gdb dal Terminale (shell) allora tutto funziona bene. I punti di interruzione vengono colpiti, viene visualizzato il codice sorgente, nessun problema.
Mi sono assicurato che sia Eclipse che la shell stiano utilizzando lo stesso eseguibile gdb, e lo sono (è/usr/bin/gdb).
Ora posso sbagliarmi, ma tutto questo mi fa pensare che non ci può essere un problema con il compilatore e linker bandiere (perché lo stesso eseguibile è possibile eseguire il debug dalla shell), quindi presumibilmente il problema deve essere con il modo gdb viene invocato da Eclipse? Forse quando eseguito da Eclipse gdb sta rilevando diversi file di configurazione o qualcosa di diverso rispetto a quando viene eseguito dalla shell? (Qualcuno lo sa?)
Apprezzerei molto qualsiasi aiuto con questo perché mi sta facendo girare lentamente!
Per favore fatemi sapere se ci sono altri dettagli che potrebbero essere utili - numeri di versione esatta di Eclipse/CDT/gdb, linker esatto/righe di comando del compilatore, ecc - e io aggiornare molto volentieri questo post con loro .
Molte grazie in anticipo,
thoughton.
--- a cura @ "14 ore fa" ---
ho provato il "aggiungi percorso file system" (con "cercare sottocartelle") l'opzione, ma che non ha funzionato . Ho anche provato a creare un nuovo progetto completamente piatto, ma anche questo non ha funzionato. Ho anche provato ad ottenere una versione Galileo (eclipse-SDK-3.5.2RC4 con aggiornamento CDT), ma ciò non ha fatto differenza (a parte il fatto che gdb è più lento da avviare).
Ed ecco un'altra cosa strana che ho notato: una volta che ottengo il messaggio "No sorgente disponibile", se poi switch di console di Eclipse per visualizzare la console "gdb", e girare anche su "modalità console Verbose" in modo da poter comunicare Posso quindi inviare comandi "l" e "bt" e farli funzionare correttamente, mostrando la sorgente e lo stack corretti in cui è stato colpito il mio punto di interruzione.Che, correggimi se sbaglio, deve significare che le informazioni sono lì e che gdb viene invocato correttamente, quindi perché Eclipse non vedrà queste informazioni?
Mi sto avvicinando a rinunciare a Eclipse, ad essere sincero ... Sono arrivato anche ad essa con così tante speranze.
Qualsiasi ulteriore aiuto o pensiero sarebbe molto apprezzato.
t.
Solo per la cronaca, con oggi (maggio 2012) Indigo, l'impostazione "usa il percorso completo del file per impostare i punti di interruzione" aiuta effettivamente quando tutto è costruito e collegato correttamente (e funziona perfettamente sotto la riga di comando gdb), MA ECLIPSE DEBUGGER ANCORA DICE " Nessuna fonte disponibile per main "(btw, che era un bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=305285 - che è attualmente chiuso). – mlvljr