Debug in ruby ​​1.9


90

Cosa usate per il debug in Ruby 1.9? rdebug non sembra essere compatibile .. c'è qualcosa là fuori?


10
Ignora la prima risposta; ruby-debug19non è aggiornato ora.
Rob Howard

Risposte:


50

Nota: questa risposta era corretta ma ora non è aggiornata. Vedi la risposta corretta di seguito. TL; DR: usa "debugger" adesso.

ruby-debug è ora disponibile con Ruby 1.9.x. Vedi http://www.github.com/mark-moseley

Per installare (usando gem sull'installazione 1.9 Ruby):

gem install ruby-debug19

(con forse il necessario "sudo" di fronte).


Ho fatto un tentativo superficiale e non ha funzionato. Hai bisogno di più tempo per guardare questo.
Mark Moseley

ruby-debug-ide ora funziona: puoi ottenere la nuova gemma su cloud.github.com/downloads/mark-moseley/ruby-debug/…
Mark Moseley

Questa è una GRANDE notizia! Grazie!
andi

bel lavoro :) ma potresti creare un fatgem (contenente entrambe le versioni 1.8 e 1.9 ruby-debug) così non dobbiamo ricordarci di fare rubydebbug19? :)
horseyguy

4
Non sembra giusto sottovalutare questo solo perché il passare del tempo ha reso ora la risposta sbagliata. SO ha bisogno di un modo per gestire questi casi d'uso, per consentire alla nuova risposta giusta di diventare la prima elencata, senza penalizzare gli autori di risposte più vecchie che non sono più utili a nessuno.
iconoclasta

167

ruby-debug19non viene più mantenuto. Tutte le altre risposte sono obsolete.

Ma c'è un'alternativa:

debugger Al salvataggio!

Metti questo nel tuo Gemfile:

gem 'debugger', group: [:development, :test]

Funziona e basta. - Ed è incluso nei binari Gemfile dalla 3.2 ruby-debug19. Qualcosa da sostituire . Ha la stessa identica funzionalità e viene mantenuto attivamente.


1
Funziona bene. Molto meglio che installare ruby-debug a mano. Grazie.
manu_v

5
Questo ha davvero bisogno di essere spostato in alto come risposta migliore.
Matt Zukowski

2
Sì, davvero questa risposta deve essere la risposta migliore.
Nazar Hussain

E che ne dici di dove va effettivamente a finire nel Gemfile.
Rig

Non importa. Mettilo dove vuoi, solo non all'interno di un blocco di gruppo (non in group :development do ... endo simili), perché contiene già un gruppo.
iblue

70

AGGIORNAMENTO PER RUBY 2.0+ e SEGUENTI

byebug è il debugger attualmente consigliato per Ruby 2.0+

Questo problema è stato documentato qui , e cldwalker, l'autore del debugger, nota che il debugger avrà come ambito Ruby 1.9.2 e 1.9.3.

AGGIORNAMENTO 2

È vero che ruby-debug non viene mantenuto attivamente anche se non riesco a trovare da nessuna parte che non sia più mantenuto.

Puoi usare la nuova gemma del debugger se hai bisogno di aiuto per iniziare con la nuova gemma che puoi vedere lanciare le rotaie di Ryan Bates .

Nel tuo Gemfile inserisci:

gem 'debugger', group: [:development, :test]

È quindi possibile aggiungere un punto di interruzione in qualsiasi punto del codice utilizzando la debuggerparola chiave.

PUOI ANCORA USARE

linecache19 e ruby-debug-base19 con:

bash <<(curl -L https://raw.github.com/gist/1333785 )

VECCHIE RISPOSTE

Solo un'aggiunta su questo con rvm, ruby ​​1.9.1-p378. La storia vera è che anche se ruby-debug è 1.9.x pronto, linecache-0.43 non lo è. La soluzione è installare:

gem install ruby-debug19

Questo risolve il problema per me.

VECCHIO AGGIORNAMENTO

Se hai problemi con ruby ​​1.9.2 e il debugging di Rails 3:

gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"

Nel tuo Gemfile e facendo un file

bundle install

Ti renderà di nuovo un debugger felice.


1
Grazie, a me questa è stata la risposta più appropriata. Ma forse questo è perché hai risposto quasi un anno dopo e le cose sono cambiate per sempre al riguardo.
segna il

3

Alcune cose che potresti provare

1) eseguilo con il normale debugger di ruby ​​-rdebug [1] piuttosto lento

2) eseguilo con unroller gem [tipo di puzza, molto lento]

3) usa molte dichiarazioni di stampa velocemente, un po 'meno introspezione possibile

4) passare a un prompt irb ed eseguire del codice da lì.

è possibile elencare il codice creando il proprio "prompt di irb" che elenca il codice attorno a se stesso [utilizzare il chiamante per scoprire dove si trova], quindi passare a un normale prompt di irb.

5) forse jruby in modalità 1.9 compat ha un debugger?

[1] http://beaver.net/rdebug/index-0.html


3

Se hai ancora problemi dopo l'installazione di ruby-debug19 prova ad aggiornare ruby-debug-base19. Ho riscontrato errori e non ho potuto eseguire WEBrick in modalità di debug fino a quando non l'ho fatto.

gem update ruby-debug-base19

Oh, e grazie Mr. Moseley per tutto il tuo duro lavoro!


2

Vedi la mia risposta qui: Ruby-debug non funziona - Stack Overflow

Si tratta di far funzionare il debug di Ruby con la seguente configurazione

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (Build 3.0.8.201201201658)
  • Usando rvm, nella directory di lavoro del mio progetto ho un .rvmrc che afferma:

    rvm use ruby-1.9.3-p0@mygemset

Spero che aiuti!

- Freddy


2

Ho usato quanto segue e funziona benissimo per me:

gem "debugger", gruppo: [: sviluppo,: test]

ruby 1.9.3p194 (2012-04-20 revisione 35410) [x86_64-linux] rails 3.2.8


0

Netbeans è un buon IDE per RoR. Buon debugger anche.


1
Correggimi se sbaglio, ma non credo che il debugger funzioni ancora per Ruby 1.9.1 (implementazione C). Almeno, non sono riuscito a farlo funzionare.
JP Richardson

0

La versione ruby ​​1.9.1-p243 è disponibile e anche il compitable ruby-debug-ide funziona correttamente. Installa ruby-debug-ide usando il seguente comando:

gem installa ruby-debug-ide

Questo installerà le gemme ruby-debug-base19 e ruby-debug-ide. Ma prima assicurati di installare il mingw con successo seguendo i documenti del kit di sviluppo disponibili da RubyForge .


0

Le ultime funzionalità sono disponibili in ruby-debug-ide19 gem.


0

C'è molta scelta, a seconda delle tue esigenze.

Uso i movimenti di leva perché posso "guardare indietro" a ciò che è accaduto all'interno del comando precedente rieseguendoli in modalità di debug direttamente dal posto.


-1

nessuno usa: ruby ​​-rdebug script.rb

quindi puoi usare: b script.rb: ## (dove ## è il numero di riga di un comando ruby ​​valido) altrimenti potresti trovarti nel mezzo di rubygems o di uno dei blocchi di codice richiesti.

Quindi puoi semplicemente impostare il punto di interruzione successivo come b: ##

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.