2012-01-22 5 views
6

मैं Aptana 3.Aptana 3 रूबी डीबगर - डीबग थ्रेड लूप में अपवाद: अपरिभाषित विधि `is_binary_data? '

में सरल माणिक फ़ाइल डिबग करने के लिए कोशिश कर रहा हूँ
class HelloWorld 

def initialize() 

end 

def greet() 
    puts "hello world" 
end 
end 

h=HelloWorld.new 
h.greet 

ब्रेकप्वाइंट

h.greet 

के लिए निर्धारित है के बाद मैं डिबग शुरू कर दिया, डिबगर शुरू होता है, लेकिन जब यह गहरे लाल रंग का वर्ग प्रारंभ करने की कोशिश करता है, संदेश

Fast Debugger (ruby-debug-ide 0.4.9) listens on :54749 
Exception in DebugThread loop: undefined method `is_binary_data?' for "#<HelloWorld:0x85915fc>":String 

साथ डिबगर डिस्कनेक्ट जब मैं

को ब्रेकपाइंट सेट
h=HelloWorld.new 

डिबगर शुरू होता है, लेकिन उसके बाद मैं initialize() निर्माता में कदम रखा, यह पिछले संदेश के साथ डिस्कनेक्ट

मेरे जवाहरात सूची:

*** LOCAL GEMS *** 

archive-tar-minitar (0.5.2) 
bigdecimal (1.1.0) 
columnize (0.3.6) 
io-console (0.3) 
json (1.5.4) 
linecache19 (0.5.13) 
minitest (2.5.1) 
rake (0.9.2.2) 
rdoc (3.9.4) 
ruby-debug-base19 (0.11.26) 
ruby-debug-ide19 (0.4.12) 
ruby-debug19 (0.11.6) 
ruby_core_source (0.1.5) 

मैं सफलतापूर्वक लागू किया है these instructions, डिबगिंग लेकिन मैं अभी भी साथ समस्याओं को हल करने यह अपवाद संदेश मिला

कोई भी उत्तर स्वागत है जो इस समस्या का प्रकाश डालता है।

धन्यवाद।

उत्तर

16

मेरे गहरे लाल रंग का संस्करण:

ruby 1.9.3p0 (2011-10-30) [i386-mingw32] 

मेरे जवाहरात सूची:

... 
linecache19 (0.5.13) 
ruby-debug-base19 (0.11.26) 
ruby-debug-ide19 (0.4.12) 
... 

Aptana 3 में, मैं एक ही त्रुटि मिली।

Exception in DebugThread loop: undefined method `is_binary_data?' for "#<PostsController:0x65a8da8>":String 

रूबी-डीबग-ide19-0.4.12/xml_printer.rb देखें।

value_str = "[Binary Data]" if value_str.is_binary_data? 
    print("<variable name=\"%s\" kind=\"%s\" value=\"%s\" type=\"%s\" hasChildren=\"%s\" objectId=\"%#+x\"/>", 
     CGI.escapeHTML(name), kind, CGI.escapeHTML(value_str), value.class, 
     has_children, value.respond_to?(:object_id) ? value.object_id : value.id) 

http://apidock.com/ruby/String/is_binary_data%3F देखें।

स्ट्रिंग # is_binary_data?

यह विधि नवीनतम स्थिर संस्करण पर बहिष्कृत या स्थानांतरित हो गई है। अंतिम मौजूदा संस्करण (v1_9_1_378) यहां दिखाया गया है।

def is_binary_data? 
    (self.count("^ -~", "^\r\n").fdiv(self.size) > 0.3 || self.index("\x00")) unless empty? 
end 

(अपने कोड के लिए या) xml_printer.rb लिए इस कोड को जोड़ें।

class String 
    def is_binary_data? 
    (self.count("^ -~", "^\r\n").fdiv(self.size) > 0.3 || self.index("\x00")) unless empty? 
    end 
end 

धन्यवाद।

+0

धन्यवाद, यह चाल है। फिर बहुत बहुत धन्यवाद, यह मुझे बहुत मदद करता है। – bodo

+0

मैंने इस कोड को जोड़ा है, लेकिन अभी भी डीबग थ्रेड लूप में अपवाद प्राप्त है: अपरिभाषित विधि 'is_binary_data? ' # <स्ट्रिंग: 0x22efb10> के लिए। – Chris

+0

+1 मुझे समझ में नहीं आया क्यों रूबी 1.8.7 डीबग ने रूबी 1.9.3 नहीं किया। डीबगर रत्नों को पुनर्स्थापित करने का प्रयास किया, लेकिन यह काम नहीं किया। आपका समाधान पूरी तरह से काम किया। – Kelvin

2

यह मेरे लिए काम करता है, सुनिश्चित करें कि कोड xml_printer.rb में "मॉड्यूल डीबगर" ब्लॉक के बाहर जोड़ा गया है। मैंने मॉड्यूल ब्लॉक के अंदर पहली बार कोड जोड़ा और एक ही अपवाद मिला, लेकिन मॉड्यूल ब्लॉक के बाहर इसे रखकर अपवाद से छुटकारा पा लिया और चर का निरीक्षण किया जा सकता है।

+0

बहुत बहुत धन्यवाद! ! – Chris

+0

ओएमजी बहुत बहुत धन्यवाद !!! आपने अपना दिन – qwebek

2

मैं थोड़ी देर के लिए एक्सबैग के समाधान का उपयोग कर रहा था लेकिन डीबगिंग जैसी प्रोग्रामिंग भाषा की इस तरह की एक महत्वपूर्ण विशेषता में इस भयानक बग ने मुझे आराम नहीं दिया, इसलिए मैंने इसे थोड़ा करीब से जांच लिया, और यही मुझे पता चला।

सबसे पहले, ruby-debug-ide ने समस्या के लिए workaround लागू किया, जिसे मणि के बीटा संस्करणों में शामिल किया जाना चाहिए ताकि आप उन्हें आज़मा सकें। कौन से संस्करण उपलब्ध हैं, यह जानने के लिए here देखें। हालांकि, मेरे कंप्यूटर पर नवीनतम बीटा दुर्घटनाग्रस्त हो गया, और मैंने बाकी का परीक्षण नहीं किया है।

दूसरा, समस्या मौजूद है क्योंकि is_binary_data? विधि has been moved सिंक नामक एक मानक लाइब्रेरी में है। इसलिए require 'syck' से xml_printer.rb मेरी राय में ruby-debug-ide द्वारा लागू किए गए दोनों की तुलना में क्लीनर समाधान है और एक्सबैग द्वारा प्रस्तावित किया गया है।

मैं रूबी के लिए काफी नया हूं लेकिन मुझे एक बग कहना चाहिए जो मुझे किसी भी चीज़ को डीबग करने से रोकता है, जो एक साल के लिए स्थिर संस्करणों में अवांछित रहता है, पूरी भाषा के बारे में बहुत अच्छा प्रभाव नहीं देता है।

+0

बनाया है जोड़ने पर आपका समाधान xml_printer.rb काम करने के लिए 'syck' की आवश्यकता है ठीक है! धन्यवाद, मैं आपसे सहमत हूं, मैंने नेटबीन में डिबगिंग चलाने के लिए आधा दिन बिताया है, यह है कि, मैं चाहता हूं कि वे डिबगिंग सेटअप और चलाने का एक बेहतर आसान तरीका करें – qwebek

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