I\'m trying to debug my ncurses application, using gdb. I use tty command to redirect program\'s I/O to another terminal. Output works like a charm, but I\'m having
Maybe it's a bit late to answer, but hope this helps: It took some time to figure out how to debug ncurses applications, finally i made a very comfy way with the help of gdbserver and tmux.
This way I/O of gdb and the application are completely separated:
debug.sh (the script that starts debugging):
#!/bin/bash
tmux splitw -h -p 50 "gdbserver :12345 ./yourapplication"
tmux selectp -t 0
gdb -x debug.gdb
debug.gdb (one-liner gdb scriptfile for comfort):
target remote localhost:12345
So this way, application starts up on right side, gdb on left waiting to hit continue or any other usual gdb stuff :)
Once you exit, tmux automatically closes the gdbserver (therefore right panel as well) and that's all :)
You can attach to your process to debug from a different terminal instead of trying to run the application from within gdb
.
Run your process as normal. When it is blocked for user input, find its process ID, and then attach to it with gdb
from a different window:
gdb -p <PID>
Your problem is due to the program still expecting its interactive input to be coming from your gdb
session.