Question

Je me familiarise avec du code JRuby et j'aimerais pouvoir placer un point d'arrêt dans le code et l'exécuter (comme d'habitude) à partir de la ligne de commande, en le faisant pénétrer dans le débogueur lorsqu'il arrive à ce point.Y a-t-il quelque chose que je peux mettre dans mon code pour forcer JRuby à accéder au débogueur ?

J'ai essayé de courir jruby -r debug foo.rb (au lieu de l'habituel jruby foo.rb), puis en définissant un point d'arrêt avec b bar.py:98, puis continuez.Mais le débogueur s'arrête à chaque fois qu'il y a une exception, et il semble y en avoir beaucoup avant d'arriver à la ligne de code qui m'intéresse.J'aimerais pouvoir mettre la ou les lignes "break-into-debugger" dans mon code et exécuter jruby foo.rb et que le premier endroit où le débogueur s'arrête soit sur cette ligne.

(c'est à dire.Je recherche l'équivalent Ruby/JRuby de import pdb;pdb.set_trace() en Python.)

Était-ce utile?

La solution

Tu pourrais essayer NetBeans EDI Ruby, il intègre un interpréteur JRuby et des outils de débogage et vous pouvez déboguer visuellement directement dans l'EDI.
Si l'utilisation d'un IDE n'est pas une option pour vous, installez simplement de debug gem dans votre distribution JRuby et utilisez-le via debugger commande:

  1. Téléchargez manuellement le ruby-debug-base-0.10.3.1-java.gem à partir de débogage-communs vers un répertoire local.
  2. Installez le Gem dans votre référentiel JRuby Gem :
    jruby -S gem install -l ruby-debug-base-0.10.3.1-java.gem
  3. Installez la gemme Ruby-debug :
    jruby -S gem install --ignore-dependencies ruby-debug

Le debugger la commande devrait fonctionner maintenant.

# test.rb
require 'rubygems'
require 'ruby-debug'
debugger
# run like this:
jruby --debug -S rdebug test.rb

Plus d'informations sur Wiki NetBeans, wiki rdebug et WikiJRuby

Autres conseils

require 'rubygems'
require 'ruby-debug'
debugger

J'utilise JRuby 1.7.3 (1.9.3p385) sous Windows 7.

Contrairement à ce que les gens disent, il ne pas semblent être une version de débogage-ruby pré-installé avec JRuby. Cependant, je l'ai installé en exécutant gem install ruby-debug. Je commence le débogueur dans mon code comme ceci:

require 'rubygems'
require 'ruby-debug'
debugger

Vous devez appeler la méthode debugger partout que vous voulez avoir un point d'arrêt.

J'ai couru le code comme ceci:

jruby --debug program.rb

L'option --debug est facultative, mais sans que cela vous obtenez un avertissement que « le dépistage (par exemple set_trace_func) ne saisira pas tous les événements sans --debug drapeau ».

Une autre réponse ici utilisé l'option -S rdebug sur la ligne de commande. Cette option n'est pas nécessaire pour le débogage et il fait le début du débogueur au début de votre programme. Il suffit d'appeler la méthode debugger pour démarrer le débogueur lorsque vous en avez besoin; ne pas utiliser cette option.

Même sans la gemme-debug rubis, il semble que il y a encore une sorte de débogage de base construit pour JRuby via debug.rb . Vous pouvez simplement écrire load 'debug.rb' dans un fichier pour lancer un débogueur en cours. Il imprime des messages junky ( « Debug.rb » et « Emacs soutien disponible. »), Mais il semble fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top