Cuando se ejecuta un programa en GDB, generalmente, los argumentos para el programa se dan en el run
comando. ¿Hay alguna manera de ejecutar el programa usando GDB y también dar argumentos dentro de un script de shell?
Vi una respuesta en una pregunta relacionada, mencionando que podemos adjuntar GDB al programa después de que el script comience a ejecutarse. Pero luego tendré que 'esperar' el programa.
Hay otra manera de hacer esto?
Respuestas:
Puede ejecutar gdb con el parámetro --args,
Si desea que se ejecute automáticamente, coloque algunos comandos en un archivo (por ejemplo, 'ejecutar') y dele como argumento: -x / tmp / cmds. Opcionalmente, puede ejecutar con el modo -batch.
fuente
man gdb
no contiene--args
, por eso no lo encontré.gdb --help
hace.info gdb
próxima vez :-).info
. Si Google o Stack Overflow deja de funcionar XDindex-search
). Pruebe:,info gdb
luego 'i', luego '--args'. Te llevará directamente a eso.-ex=r
es la abreviatura de-ex=run
y le dice a gdb que ejecute su programa de inmediato, en lugar de esperar a que escriba "ejecutar" en el indicador. Luego--args
dice que todo lo que sigue es el comando y los argumentos, tal como los escribiría normalmente en la línea de comandos.fuente
-exe=r
muy útil!Otra forma de hacer esto, que personalmente considero un poco más conveniente e intuitiva (sin tener que recordar el
--args
parámetro), es compilar normalmente y usarr arg1 arg2 arg3
directamente desde adentrogdb
, así:fuente
Puede crear un archivo con contexto:
Y llama a gdb como
fuente
gdb tiene
--init-command <somefile>
donde somefile tiene una lista de comandos gdb para ejecutar, lo uso para tener//GDB
comentarios en mi código, luego `como un script, que coloca el comando para cargar los símbolos de depuración, y luego genera una lista de comandos de interrupción para poner un punto de interrupción para cada
//GDB
comentario, y comienza a ejecutarfuente
Si el
--args
parámetro no funciona en su máquina (es decir, en Solaris 8), puede iniciar gdb comoY puede combinar esto con ingresar un archivo a stdin y "ejecutarse inmediatamente":
fuente
Además de la respuesta de Hugo Ideler. Cuando utilicé argumentos con el mismo prefijo como
--
o-
, no estaba seguro de entrar en conflicto con gdb one.Parece que gdb toma todas las
args
opciones como argumentos para el programa.Al principio quería estar seguro, ejecuté gdb con comillas alrededor de sus argumentos, se elimina en el lanzamiento.
Esto también funciona, pero opcional:
Esto no funciona
En ese caso,
-tui
se usa como parámetro de mi programa, no como gdb one.fuente
Demasiado tarde, pero aquí hay un método que funciona durante la
gdb
sesión.entonces
Esto devolverá muchas coincidencias, la útil es
set args
.entonces
Esto ejecutará el programa, pasando a main (argc, argv) los argumentos y el recuento de argumentos.
fuente