emacs gdb redirect command-line-arguments

emacs - ¿Cómo cargar el programa de lectura de stdin y tomar los parámetros en gdb?



redirect command-line-arguments (4)

Tengo un programa que toma la entrada de stdin y también toma algunos parámetros de la línea de comandos. Se parece a esto:

cat input.txt > myprogram -path "/home/user/work"

Intento depurar el código con gdb dentro de emacs, por Mx gdb, intento cargar el programa con el comando:

gdb cat input.txt > myprogram -path "/home/user/work"

Sin embargo, a gdb no le gusta.

Pregunta descifrada desde here . Lamentablemente, no entiendo la solución y no estoy seguro de qué hacer más allá de compilar con la opción -g y ejecutar el comando Mx gdb.


Hay varias formas de hacerlo:

$ gdb myprogram (gdb) r -path /home/user/work < input.txt

o

$ gdb myprogram (gdb) set args -path /home/user/work < input.txt (gdb) r

o

$ gdb -ex ''set args -path /home/user/work < input.txt'' myprogram (gdb) r

donde el comando gdb run ( r ) utiliza por defecto los argumentos establecidos anteriormente con set args .


Para completar, al iniciar una sesión de depuración también está la opción --args. es decir)

gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3


Si lo hicieras desde un caparazón, lo harías así:

% gdb myprogram gdb> run params ... < input.txt

Esto parece funcionar dentro de emacs también.


Y si no necesita depurar desde el principio, también puede adjuntar a un proceso ya en ejecución mediante:

$ gdb myprogram xxx

donde xxx es la identificación del proceso. Entonces no necesita decirle a gdb los argumentos iniciales.