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.