2010-05-26 6 views
17

La domanda è stata posta prima e vedo la segnalazione di bug sui newsgroup ddd ma nessuna delle soluzioni suggerite funziona per me.ddd si blocca all'avvio

Viene fuori ma quando si tenta di fare qualcosa come aprire un file si blocca con il messaggio "in attesa che GDB sia pronto."

Un fatto cruciale, segnalato anche da altri, è che funziona bene per alcuni utenti e non per altri. Ho confrontato gli ambienti e non riesco a trovare differenze significative. Qualsiasi suggerimento sarà più apprezzato.

+0

potrebbe non essere una cattiva idea pubblicare le cose che hai provato anche se non funzionasse, o forse anche collegarti al rapporto sui bug correlati –

+0

punto preso. Ho provato: rimuovere .gdbinit. Cambiando il prompt tramite .gdbinit a "(gdb)" (lo spazio finale dovrebbe essere significativo). Ho rimosso il mio initrc. Nessuno ha funzionato. Qui ci sono collegamenti a segnalazioni di bug e correzioni suggerite (che per me non ha funzionato): http://bugs.gentoo.org/show_bug.cgi?id=93543#c10 http://osdir.com/ml/debugging .ddd.bugs/2003-02/msg00005.html –

risposta

23

Rimozione delle giunzioni ~/.ddd per risolvere il problema.

+0

Pulito e semplice. Questo deve essere diffuso al mondo, avevo quasi rinunciato a ** ddd ** prima di vedere questo – albfan

+0

Risolto il problema anche per me. Una volta. Quindi il problema è apparso di nuovo. E poi lo ha risolto di nuovo. E così via. In breve, devo rimuovere ~/.ddd ogni volta che chiamo ddd. –

2

Penso che rimuovere il file di init dentro .ddd risolverà anche questo problema. Non è necessario rimuovere l'intera cartella .ddd. L'ho provato e ha funzionato !

Inoltre, se si modificano ampiamente le opzioni predefinite di ddd come pulsanti e display grafici, è possibile spostare il file di inizializzazione all'esterno di questa cartella e quindi copiare alcune delle opzioni sul file init creato da ddd per impostazione predefinita.

Nota: quando si riavvia ddd dopo aver rimosso il file init, verrà creato il file di inizializzazione predefinito.

0

Il suggerimento di Decipher di eliminare semplicemente il file di init ha funzionato anche per me.

E per coloro che non sanno, ~/.ddd è la cartella .ddd nella vostra home directory.

1

Se il problema persiste, la seguente soluzione può aiutare:

  • ddd aperta come si farebbe normalmente (ad es ddd --debugger bashdb script.sh.)
  • tipo exit nel riquadro inferiore della ddd

Questo sembra uccidere un'istanza di bashdb, e quindi sembra che venga eseguita un'altra istanza di bashdb. Questa seconda istanza di bashdb sembra funzionare bene, con l'origine di bash-script che finalmente appare nel riquadro superiore e che consente di eseguire il passaggio e il debug.

16

Incontrato anche questo problema. La soluzione facile come postata sopra è quella di eliminare il file init nella directory ~/.ddd /.

Ma questo significa che tutte le personalizzazioni saranno sparite. Così ho iniziato a cercare la vera causa. Ho osservato che il problema si verifica solo dopo aver utilizzato la finestra di dialogo "Impostazioni GDB". Una volta aperta questa finestra di dialogo, il file di init menzionato in precedenza aumenterà perché in essa saranno memorizzate molte impostazioni di gdb.

Dopo aver ridotto le righe aggiuntive, passo dopo passo, ho trovato la "linea di disturbo". Il problema è causato dall'impostazione per prompt esteso. Dopo aver aperto le impostazioni GDB finestra di dialogo di questa linea si leggerà come

set esteso-prompt non impostato \ n \

Questa "non impostata" è quello che gdb riferirà su "spettacolo esteso-prompt". Unfortunatley "set extended-prompt è una sorta di bug in gdb, quindi se inserisco" set extended-prompt non impostato "in un gdb in esecuzione da una shell senza ddd coinvolto gdb si blocca anche.

Sembra che l'unico modo sicuro per impostare il prompt di estensione sia quando contiene la stringa "(gdb)". Così ho modificato la linea incriminata nel file init e ora si legge come questo:

set esteso-prompt (gdb) \ n \

Con questa impostazione non mi incontrare il più alcun problema. Spero che ti aiuti anche nel tuo caso.

+2

Questo ha risolto il problema anche per me, senza dover clobberare le mie impostazioni. – Anthony

+1

Ho trovato anche questa soluzione, ma lasciando vuoto il campo del valore. L'impostazione di un valore si blocca ancora all'avvio. –

5

Fare un Ctrl + D, quindi scegliere "Riavvia DDD" sembra funzionare per me.

+3

Funziona anche per me. Grande! –

1

Il problema si presenta quando si apre la finestra GDB Settings..., anche senza toccare alcuna impostazione.

Poiché la rimozione dell'intera directory di configurazione ogni volta non è un modo per andare se hai personalizzato il tuo ambiente DDD, ho trovato una soluzione per risolvere il file ~/.ddd/init che potrebbe aiutarti anche senza rimuovere l'intera configurazione.

Chiudere DDD e aperto con l'editor di testo il file

~/.ddd/init 

Cerca la linea

set extended-prompt not set\n\ 

e rimuoverlo o sostituirlo con

set extended-prompt \n\ 

Salva e r un DDD. Comincerà come dovrebbe.

Poiché questo compito può essere noioso da ripetere ogni volta, soprattutto se si modificano le impostazioni di gdb molto spesso come me, ti suggerisco di creare un alias nell'ambiente di shell come questo.

alias fix-ddd="sed '/not set/d' -i $HOME/.ddd/init" 

Quest'ultimo approccio ha il vantaggio che si lavorerà per qualsiasi ambiente Bugged nel file init, senza il tuo intervento specifico.


Se non si desidera utilizzare la CLI per correggere il file init un altro approccio è quello di modificare il file di inizializzazione, come suggerito in precedenza e se capita anche a voi di aprire per nessun motivo il pannello GDB Settings... poi ricordarsi di disattivare nel menu Edit l'opzione Save Options e lasciarlo disattivato fino al successivo riavvio DDD.


Per ragioni di completezza (dichiarata dal @hmogal) colpendo

CTRL+d 

durante l'attaccatura GDB GDB uccide e riavvia permettendo l'uso DDD. Sfortunatamente questo approccio non è una buona soluzione perché cancella l'intera configurazione GDB all'interno del file di init, anche le impostazioni specificatamente sintonizzate dall'utente. Quindi fai attenzione.


Tutto testato con DDD 3.2.12.

1

Utilizzo di Ctrl + D Apre una finestra di dialogo che chiede di riavviare GDB che risolve il problema.Nel mio caso l'eliminazione di ~/.ddd o del file init in questa particolare cartella non ha aiutato.