2015-07-03 17 views
8

Esiste un comando per uscire dai cicli (diciamo, per o mentre) durante il debug su ipdb senza dover utilizzare i punti di interruzione su di essi?debugger ipdb, passo fuori ciclo

Uso il comando until per uscire dalla comprensione delle liste, ma non so come potrei fare una cosa simile, se possibile, di interi blocchi di loop.

risposta

3

Questo potrebbe sembrare ovvio: salto ti fa saltare. Ciò significa che non si eseguono le linee saltate: si dovrebbe usare questo per saltare il codice che non si desidera eseguire.

probabilmente avete bisogno tbreak (punto di interruzione temporanea, che viene rimosso automaticamente quando è primo colpo. Gli argomenti sono gli stessi di pausa) come ho fatto quando ho trovato questa pagina.

1

Se si desidera utilizzare un altro debugger, trepan, è possibile eseguire ulteriori passaggi. È più simile a gdb. Quindi puoi dare un conteggio di quante volte vuoi fare un passo. Oppure puoi dare un numero di linea in un comando debugger continue che in pratica imposta un punto di interruzione temporaneo sulla linea e poi emette "continua". Altre cose che cambiano stepping sono "set different". Vedi anche i suffissi pari che puoi mettere su step.

Si noti che come ipdb, è presente l'evidenziazione della sintassi del testo di origine.

7

Credo che questo sia l'intento del comando until. È come un next eccetto che quando si verifica un salto a un numero di riga precedente per il ciclo, continuerà fino all'uscita dal ciclo.

unt(il) 
Continue execution until the line with a number greater than the current 
one is reached or until the current frame returns 

In generale, per "uscire" della funzione corrente, utilizzare return.

r(eturn) 
Continue execution until the current function returns. 
+0

no, ad esempio, fino a quando non si esce dalla comprensione delle liste. Continua l'esecuzione UNTIL reching un numero di linea diverso da quello attuale, solo quello. Se all'interno di un blocco di codice (per, mentre, qualsiasi altra cosa), non c'è modo, ma con i punti di interruzione, per quanto ho studiato bene –

15

È possibile utilizzare j <line number> (jump) per passare a un'altra riga. per esempio, j 28 per andare alla linea 28.

+0

, penso che questo sia il più vicino a quello che mi serve, grazie mille! :) –