2010-12-23 15 views

Respuesta

130

Pase los argumentos al comando run desde dentro de gdb.

$ gdb ./a.out 
(gdb) r < t 
Starting program: /dir/a.out < t 
+2

'r' es la abreviatura de' run' y puede seguirlo con cualquier argumento. Como en esta pregunta, sería: 'r arg1 arg2 phyatt

+0

Para mí no funciona. Luego probé '$ gdb./A.out' luego' (gdb) r mysticTot

406

Usted puede hacer esto:

gdb --args path/to/executable -every -arg you can=think < of 

El bit magic --args.

Simplemente escriba run en la consola de comandos de gdb para iniciar la depuración.

+23

Al principio pensé que estaba leyendo esto mal; Es extraño que --args vaya antes del ejecutable. ¡Pero así es! –

+8

@Kaolin --args debe venir antes del ejecutable porque es un interruptor para gdb. Si vino después, ¿cómo lo distinguiría gdb de un argumento que deseaba pasar al ejecutable que está depurando? – codehippo

+8

@codehippo: Bueno, si no especificó '--args', entonces _aren't_ ningún argumento pasó al ejecutable, por lo que no es ambiguo. –

1

Inicie GDB en su proyecto.

  1. Vaya al directorio del proyecto, donde ya ha compilado el ejecutable del proyecto. Emitir el comando gdb y el nombre del archivo ejecutable de la siguiente manera:

    GDB projectExecutablename

Esto se pone en marcha el BGF, imprime el siguiente: GDB de GNU (Ubuntu 7.11.1-0ubuntu1 ~ 16.04) 7.11. 1 Copyright (C) 2016 Free Software Foundation, Inc. .................................... ............. Escriba "apropos word" para buscar comandos relacionados con "word" ... Lectura de símbolos del projectExecutablename ... done. (BGF)

  1. Antes de comenzar su programa en ejecución, desea establecer los puntos de interrupción. El comando break te permite hacerlo. Para establecer un punto de interrupción en el comienzo de la función llamada main:

    (BGF) b principal

  2. Una vez que haya tener la (BGF) del sistema, la orden de marcha se inicia el funcionamiento ejecutable. Si el programa que está depurando requiere argumentos de línea de comandos, especifíquelos en el comando de ejecución. Si desea ejecutar mi programa en el archivo "xfiles" (que se encuentra en un "Mulder" carpeta en el directorio del proyecto), que haría lo siguiente:

    (BGF) r/mulder xfiles

Espero que esto ayude.

Descargo de responsabilidad: Esta solución no es mía, está adaptada de https://web.stanford.edu/class/cs107/guide_gdb.html Esta breve guía de gdb fue, muy probablemente, desarrollada en la Universidad de Stanford.

3

Si usted quiere tener al descubierto comando run en gdb para ejecutar su programa con cambios de dirección y argumentos, puede utilizar set args:

% gdb ./a.out 
(gdb) set args arg1 arg2 <file 
(gdb) run 

he podido lograr el mismo comportamiento con --args parámetro, gdb ferozmente escapa los cambios de dirección, es decir

% gdb --args echo 1 2 "<file" 
(gdb) show args 
Argument list to give program being debugged when it is started is "1 2 \<file". 
(gdb) run 
... 
1 2 <file 
... 

Ésta realidad redirige la entrada de gDB en sí, no es lo que realmente quieren aquí

% gdb --args echo 1 2 <file 
zsh: no such file or directory: file 
Cuestiones relacionadas