2011-11-12 17 views
5

Questa è una fonte di vecchia data di frustrazione, ma forse c'è qualcosa che mi manca. Se sono nel debugging e voglio uscire dal debugger e tornare a IRB o Rails Console, "quit" non funzionerà perché uscirà da IRB. anche "finish" sembra avere lo stesso effetto di continuare. Usare "cancella" per rimuovere i punti di interruzione e quindi provare "continua" o "finire" non funziona.Come posso uscire dal debugger senza uscire dalla mia sessione IRB?

Qualche idea?

risposta

2

Questo SO question ha alcuni buoni suggerimenti. Si occupa in particolare del debug all'interno di loop. Un'ottima soluzione è impostare il punto di interruzione all'esterno del ciclo, quindi da irb impostarlo all'interno del ciclo e cancellarlo manualmente quando lo si desidera.

Fondamentalmente si tratta di mettere un po 'di pensiero in cui impostare i punti di interruzione.

Diverso da quello che non sembra essere nient'altro che tu possa fare.

2

Almeno in byebug, si può fare questo:

eval return 

che ha l'effetto netto di valutare una dichiarazione di ritorno dalla funzione corrente. Funziona a volte, a seconda di come appare lo stack di chiamate.

Ora, mentre questo non rimuove il punto di interruzione corrente .... se si desidera solo il controllo indietro, lo farà nella maggior parte dei casi, a seconda di come è strutturato il codice.

E 'anche utile per fare questo quando si crea una voce di debug nel codice:

byebug unless $continue 

Quindi, se tutto il resto fallisce in una sessione di debug, è sempre possibile eseguire

$continue = true 
c 

Ora questo apre tutta una serie di possibilità.

Problemi correlati