Sembra che il reindirizzamento ingresso in gdb non funziona in Cygwin per esempioredirezione dell'input gdb con Cygwin
(gdb) run < input.txt
C'è altro modo per reindirizzare ingresso in gdb di Cygwin ??
Sembra che il reindirizzamento ingresso in gdb non funziona in Cygwin per esempioredirezione dell'input gdb con Cygwin
(gdb) run < input.txt
C'è altro modo per reindirizzare ingresso in gdb di Cygwin ??
Purtroppo questo non è possibile quando si esegue gdb in cygwin. Il bug esiste per una citazione da molto tempo, ma a quanto pare è difficile da correggere - e probabilmente gli sviluppatori di gdb preferiscono passare il tempo su funzionalità/problemi rilevanti per ambienti più comuni (come Linux).
Esistono varie soluzioni possibili; Preferirei il primo dato che è il più pulito e utile anche quando non eseguo il debug/running su cygwin:
-f whatever
con whatever
è il nome del file da cui leggere. Se l'argomento non è presente o impostato su -
, leggi da stdin. L'opzione -f -
è ovviamente facoltativa, ma per gli argomenti che accettano i nomi di file è uno standard comune (purché abbia senso) per gestire -
come "usa stdin/out".Utilizzare l'hack gdb menzionato here per riassociare stdin ad un file aperto manualmente all'interno dell'applicazione:
> gdb yourexecutable
(gdb) break main
(gdb) run
(gdb) call dup2(open("input.txt", 0), 0)
(gdb) continue
Questo imposta un punto di interruzione sulla funzione main
, poi esegue il programma che romperà destra dopo aver inserito main
. Quindi lo dup2
viene utilizzato per sostituire lo stdin fd (0
) con un descrittore di file del file di input.
Questa è una limitazione di Cygwin, c'è diversi espedienti per questo, si possono provare le soluzioni di questo problema correlato: http://stackoverflow.com/questions/3544325/input-redirection-in-gdb-mingw – speedblue