2010-10-27 7 views
49

Sé que puedo usar jump para configurar el contador del programa en una línea específica y así puedo omitir una o más líneas (o ejecutar algunas líneas de nuevo). ¿Puedo omitir fácilmente la siguiente línea sin tener que ingresar los números de línea?¿Puedo usar gdb para saltear una línea sin tener que escribir números de línea?

Esto sería muy conveniente para "comentar" algo en tiempo de ejecución.

+0

Relacionados: más cosas generales sobre el uso de 'jump' (por ejemplo, que solo es seguro dentro de la función actual, y solo si compiló con' -O0'): https://stackoverflow.com/questions/4116632/is- it-possible-to-jump-skip-in-gdb-debugger/46043760 # 46043760 –

Respuesta

60
jump +1 

salta a la siguiente línea de línea, es decir, omitiendo la línea actual. También puede combinarlo con tbreak +1 para establecer un punto de interrupción temporal en el objetivo de salto.

Consulte http://sourceware.org/gdb/current/onlinedocs/gdb/Specify-Location.html para conocer más formas de expresar ubicaciones con gdb.

Tenga en cuenta que sin un punto de interrupción gdb es probable que continúe la ejecución normalmente en lugar de saltar. Entonces, si saltar parece no funcionar, asegúrese de establecer un punto de interrupción en el destino.

+0

Bastante obvio, ¡pero gracias! Funciona muy bien en Xcode utilizando puntos de interrupción con el comando Depurador. –

+1

Debe tenerse en cuenta que esto también funciona en LLDB. :) –

+0

Si está trabajando directamente en asm, puede ir a las instrucciones que desee emitiendo un 'j addr' donde' addr' es la dirección a la que desea ir. – dionyziz

5

para saltarse cualquier número de líneas durante la ejecución:

[Current Position -- in GDB] Line N 
.......... // Lines To Skip 
.......... 
.......... 
[Line To Execute - After Jumping] Line M 

Deja un punto de interrupción en la línea M:

gdb$b M 

Ir a Línea M:

gdb$jump M 
14

Tengo el siguiente en mi archivo de configuración .gdbinit:

define skip 
    tbreak +1 
    jump +1 
end 

Tan solo escriba skip en gdb para omitir una línea.

+0

¿Cómo se parametriza para "omitir (N)"? – p2rkw

+2

@ p2rkw. Puede reemplazar '1' con $ arg0, como se explica aquí: https://sourceware.org/gdb/onlinedocs/gdb/Define.html. Tenga en cuenta que ya no usaría el nombre 'skip' porque se convirtió en una función de GDB (lo que permite omitir archivos de origen al pasar por su código). – gospes

Cuestiones relacionadas