2010-10-27 11 views
49

So che posso usare jump per impostare il contatore del programma su una linea specifica e quindi posso saltare una o più righe (o eseguire nuovamente alcune righe). Posso semplicemente saltare la riga successiva senza dover inserire i numeri di riga?Posso usare gdb per saltare una riga senza dover digitare i numeri di riga?

Questo sarebbe molto comodo per "commentare" qualcosa in fase di esecuzione.

+0

Correlato: argomenti più generali sull'uso di 'jump' (ad esempio che è sicuro solo all'interno della funzione corrente e solo se è stato compilato con' -O0'): https://stackoverflow.com/questions/4116632/is- it-possible-to-jump-skip-in-gdb-debugger/46043760 # 46043760 –

risposta

60
jump +1 

salta alla riga successiva, saltando la linea corrente. Si consiglia inoltre di combinarlo con tbreak +1 per impostare un punto di interruzione temporaneo nella destinazione del salto.

Vedere http://sourceware.org/gdb/current/onlinedocs/gdb/Specify-Location.html per altri modi di esprimere posizioni con gdb.

Si noti che senza un punto di interruzione gdb è probabile che continui normalmente l'esecuzione anziché saltare. Quindi se il salto non sembra funzionare, assicurati di impostare un punto di interruzione nella destinazione.

+0

Abbastanza ovvio, ma grazie! Funziona alla grande in Xcode utilizzando i punti di interruzione con il comando Debugger. –

+1

Va notato che questo funziona anche in LLDB. :) –

+0

Se stai lavorando direttamente in asm, puoi saltare alle istruzioni che desideri emettendo un 'j addr' dove' addr' è l'indirizzo a cui vuoi saltare. – dionyziz

5

Per saltare qualsiasi numero di linee durante l'esecuzione:

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

mettere un punto di interruzione sulla linea M:

gdb$b M 

Salta al Linea M:

gdb$jump M 
14

ho il seguente nel file di configurazione .gdbinit:

define skip 
    tbreak +1 
    jump +1 
end 

Quindi basta digitare skip in gdb per saltare una linea.

+0

Come parametrizzarlo su "salta (N)"? – p2rkw

+2

@ p2rkw. Puoi sostituire '1' con $ arg0, come spiegato qui: https://sourceware.org/gdb/onlinedocs/gdb/Define.html. Tieni presente che non utilizzerei più il nome 'salta', perché è diventato una funzione GDB (che consente di saltare i file sorgente mentre si passa attraverso il codice). – gospes

Problemi correlati