2010-02-04 13 views
25

Puedo decirle a GDB que regrese de una función inmediatamente con return, y llamar a una función con call myFunction.¿Cómo hago que GDB salga de un bucle?

Pero, ¿cómo hago que salga del ciclo actual? es decir, actuar como si golpeara una declaración break;.

¿Es jump myfile.c:<linenumber> la forma de hacerlo?

+0

¿Desea ejecutar el bucle normalmente y 'romper' fuera de él, o alterar la ejecución omitiendo el bucle por completo? Pedir diferenciar de https://stackoverflow.com/questions/14651073/is-there-a-gdb-command-to-finish-a-loop-construct –

Respuesta

3

Hago esto:
1. hacer una lista de fuente.
2. Establezca un punto de interrupción en la próxima línea donde termina el ciclo.
3. Continuar

+8

Ni siquiera necesita un punto de interrupción real. Puede usar 'until' para indicarle que continúe hasta cierto número de línea. Este es un punto de quiebre de una sola vez. –

+8

Eso no está saliendo del ciclo, eso está esperando hasta que termine el ciclo (que podría ser nunca). –

+0

http://stackoverflow.com/questions/14651073/is-there-a-gdb-command-to-finish-a-loop-construct/ –

0

Una de las maneras podría ser establecer la condición del lazo en falso. Pero esto significaría que tendrías que esperar a que termine la iteración actual.

Entonces, para resumir los pasos serían:
1. Establecer un punto de interrupción en la última línea del bucle
2. Continuar
3. Cuando éxitos de punto de interrupción, establezca la variable condición de bucle en false.

Sin embargo, no funcionará como declaración de corte directo.

+1

Sí, esto es lo que suelo hacer, pero estoy seguro de que debe ser una forma de imitar 'break;' –

8

Puede usar - hasta que termine el ciclo.

Debe darle al final del ciclo.

  • Útil si no necesita entrar en iterar un ciclo.
+0

Si leo los documentos a la derecha (http://www.delorie.com/gnu/docs/gdb/gdb_38.html) eso es equivalente a establecer un punto de interrupción temporal después del ciclo - Yo estaba buscando salir del circuito. –

+0

este consejo todavía es valioso, aunque no es una respuesta a la pregunta. Tal vez la pregunta debería ampliarse para incluir una declaración específica de que no desea esta función. – hochl

Cuestiones relacionadas