2010-03-24 11 views
6

मैं अपने आप को कुछ जेआरबीई कोड से परिचित कर रहा हूं, और मैं कोड में ब्रेकपॉइंट डाल सकता हूं और कमांड लाइन से (हमेशा की तरह) चला सकता हूं, जब इसे उस पर डीबगर में तोड़ दिया जाता है बिंदु। क्या डीबगर में तोड़ने के लिए जेआरबी को मजबूर करने के लिए मेरे कोड में कुछ ऐसा लगाया जा सकता है?डीबगर में तोड़ने के लिए मैंने अपने रूबी (जेआरबी) कोड में क्या रखा?

मैंने jruby -r debug foo.rb (सामान्य jruby foo.rb के बजाय) चलाने की कोशिश की है, और उसके बाद b bar.py:98 के साथ ब्रेकपॉइंट सेट कर रहा है, और फिर जारी है। लेकिन डीबगर हर बार एक अपवाद होता है, और उनमें से बहुत से कोड होने की संभावना है, इससे पहले कि मैं दिलचस्पी लेता हूं। मैं "ब्रेक-इन-डीबगर" डाल सकता हूं लाइन (ओं) में मेरे कोड में और jruby foo.rb चलाएं और उस स्थान पर डीबगर स्टॉप होने वाली पहली जगह हो।

(यानी मैं अजगर में import pdb;pdb.set_trace() की रूबी/JRuby बराबर की तलाश में हूँ।)

उत्तर

5

आप NetbeansRuby IDE की कोशिश कर सकते हैं, यह एम्बेडेड JRuby दुभाषिया और डीबगिंग टूल है और आप नेत्रहीन में डीबग कर सकते हैं आईडीई सीधे।
तो एक IDE का उपयोग कर आप के लिए एक विकल्प नहीं है, बस अपने JRuby distro में डी debug मणि स्थापित करने और debugger आदेश के माध्यम से इसका इस्तेमाल करते हैं:

  1. मैन्युअल माणिक डिबग आधार-0.10.3.1-जावा डाउनलोड करें। debug-commons से स्थानीय निर्देशिका में मणि।
  2. अपने JRuby रत्न भंडार में रत्न स्थापित करें:
    jruby -S gem install -l ruby-debug-base-0.10.3.1-java.gem
  3. स्थापित माणिक डिबग मणि:
    jruby -S gem install --ignore-dependencies ruby-debug

debugger आदेश अब काम करना चाहिए।

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

अधिक Netbeans wiki, rdebug wiki और JRuby wiki

+0

नेटबीन्स मेरे लिए अच्छी तरह से काम कर रहा है, केवल कॉन्फ़िगरेशन की एक छोटी सी आवश्यकता है। धन्यवाद! –

+1

JRuby 1.5+ में, सभी आवश्यक रत्न डिफ़ॉल्ट रूप से स्थापित किए जाएंगे, इसलिए कुछ भी इंस्टॉल करने की आवश्यकता नहीं होगी (esp। Non-default कमांड लाइन विकल्पों के साथ)। तो, डीबग बॉक्स के बाहर जेआरबी 1.5+ में काम करेगा। – vsizikov

1
require 'rubygems' 
require 'ruby-debug' 
debugger 
+0

मुझे "लोडरर: लोड करने के लिए ऐसी कोई फ़ाइल नहीं है - रूबी-डीबग" - शायद यह जेआरबी में काम नहीं करता है? –

+0

जाहिर है JRuby गैर देशी मूल रूबी घटकों के साथ किसी भी रत्न का समर्थन नहीं करता है; Google ने निम्न को चालू कर दिया, लेकिन मुझे कोई जानकारी नहीं है कि यह कोई अच्छा है: http://debug-commons.rubyforge.org/ – bnaul

1

मैं JRuby 1.7.3 (1.9.3p385) का उपयोग कर रहा विंडोज 7 पर

लोग क्या कहते हैं के विपरीत के बारे में जानकारी है, वहाँ नहीं लगता है कि जेआरबी के साथ प्रीइंस्टॉल किए गए रूबी-डीबग का एक संस्करण प्रतीत होता है। हालांकि, मैंने gem install ruby-debug चलाकर इसे स्थापित किया। मैं इस तरह मेरे कोड में डिबगर शुरू:

require 'rubygems' 
require 'ruby-debug' 
debugger 

आप हर जगह debugger विधि फोन करना चाहिए कि आप एक ब्रेकपाइंट करना चाहते हैं।

मैं इस तरह कोड भाग गया:

jruby --debug program.rb 

--debug विकल्प वैकल्पिक है, लेकिन इसके बिना आप एक चेतावनी है कि "अनुरेखण (जैसे set_trace_func) झंडा --debug बिना सभी घटनाओं पर कब्जा नहीं होगा" मिलता है।

यहां एक और उत्तर कमांड लाइन पर -S rdebug विकल्प का उपयोग किया गया। यह विकल्प डिबगिंग के लिए आवश्यक नहीं है और यह आपके प्रोग्राम की शुरुआत में डीबगर शुरू होता है।जब आपको इसकी आवश्यकता हो तो डीबगर शुरू करने के लिए बस debugger विधि पर कॉल करें; उस विकल्प का प्रयोग न करें।

रूबी-डीबग मणि के बिना भी, ऐसा लगता है कि अभी भी debug.rb के माध्यम से जेआरबी में निर्मित कुछ प्रकार की मूल डिबगिंग है। डीबगर जाने के लिए आप फ़ाइल में load 'debug.rb' लिख सकते हैं। यह कुछ जंकी संदेशों को प्रिंट करता है ("डीबग.आरबी" और "इमाक्स समर्थन उपलब्ध है।") लेकिन ऐसा लगता है कि यह काम करता है।

संबंधित मुद्दे