การแก้จุดบกพร่องในทับทิม 1.9


90

พวกคุณใช้อะไรในการแก้จุดบกพร่องใน Ruby 1.9? rdebug ดูไม่เข้ากัน .. มีอะไรรึเปล่า?


10
ไม่สนใจคำตอบแรก ruby-debug19ล้าสมัยในขณะนี้
Rob Howard

คำตอบ:


50

หมายเหตุ: คำตอบนี้ถูกต้อง แต่ล้าสมัยแล้ว ดูคำตอบที่ถูกต้องด้านล่าง TL; DR: ใช้ 'debugger' ทันที

ตอนนี้ Ruby-debug สามารถใช้ได้กับ Ruby 1.9.x. ดูhttp://www.github.com/mark-moseley

ในการติดตั้ง (โดยใช้อัญมณีในการติดตั้ง 1.9 Ruby):

gem install ruby-debug19

(อาจมี 'sudo' ที่จำเป็นอยู่ข้างหน้า)


ฉันลองทำแบบคร่าวๆแล้วก็ไม่ได้ผล ต้องใช้เวลามากกว่านี้เพื่อดูเรื่องนี้
Mark Moseley

ruby-debug-ide กำลังทำงาน - คุณสามารถรับอัญมณีใหม่ได้ที่cloud.github.com/downloads/mark-moseley/ruby-debug/…
Mark Moseley

นี่เป็นข่าวดี! ขอขอบคุณ!
andi

ทำได้ดีมาก :) แต่คุณสามารถสร้าง fatgem (ที่มีทั้งรุ่น 1.8 และ 1.9 ruby-debug) เพื่อที่เราจะได้ไม่ต้องจำทำ rubydebbug19? :)
horseyguy

4
ดูเหมือนจะไม่ยุติธรรมที่จะลงคะแนนเพียงเพราะเวลาที่ผ่านไปทำให้ตอนนี้เป็นคำตอบที่ผิด SO ต้องการวิธีการจัดการกรณีการใช้งานดังกล่าวเพื่อให้คำตอบใหม่ที่ถูกต้องกลายเป็นรายการแรกโดยไม่ต้องโทษผู้เขียนคำตอบเก่า ๆ ที่ไม่เป็นประโยชน์กับใครอีกต่อไป
iconoclast

167

ruby-debug19ไม่ได้รับการบำรุงรักษาอีกต่อไป คำตอบอื่น ๆ ทั้งหมดล้าสมัย

แต่มีทางเลือกอื่น:

debugger ช่วยเหลือ!

ใส่สิ่งนี้ไว้ในGemfile:

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

มันใช้งานได้ - และมันจะรวมอยู่ในราง Gemfile ตั้งแต่ 3.2.something ruby-debug19จะเข้ามาแทนที่ มีฟังก์ชันการทำงานเหมือนกันทุกประการและได้รับการบำรุงรักษาอย่างต่อเนื่อง


1
ใช้งานได้ดี ดีกว่าการติดตั้ง Ruby-debug ด้วยมือ ขอบคุณ.
manu_v

5
เรื่องนี้ต้องเลื่อนขึ้นเป็นคำตอบอันดับต้น ๆ
Matt Zukowski

2
ใช่คำตอบนี้ต้องเป็นคำตอบอันดับต้น ๆ
Nazar Hussain

แล้วสิ่งนี้จะไปที่ใดใน Gemfile
Rig

ไม่เป็นไร. วางไว้ที่ใดก็ได้ที่คุณต้องการอย่าอยู่ในกลุ่มบล็อก (ไม่ใช่ในgroup :development do ... endหรือสิ่งที่คล้ายกัน) เพราะมีกลุ่มอยู่แล้ว
iblue

70

อัปเดตสำหรับ RUBY 2.0+ และกำลังติดตาม

byebugคือดีบักเกอร์ที่แนะนำสำหรับ Ruby 2.0+

ปัญหานี้ได้รับการบันทึกไว้ที่นี่และ cldwalker ผู้เขียนดีบักเกอร์ตั้งข้อสังเกตว่าดีบักเกอร์จะถูกกำหนดขอบเขตเป็น Ruby 1.9.2 และ 1.9.3

อัปเดต 2

เป็นความจริงที่ว่า Ruby-debug ไม่ได้รับการดูแลอย่างแข็งขันแม้ว่าฉันจะไม่พบที่ใดก็ตามที่ไม่ได้รับการดูแลอีกต่อไป

คุณสามารถใช้อัญมณีดีบักใหม่ถ้าคุณต้องการความช่วยเหลือจะเริ่มต้นด้วยอัญมณีใหม่ที่คุณสามารถดูไรอันเบตส์รางหล่อ

ใน Gemfile ของคุณใส่:

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

จากนั้นคุณสามารถเพิ่มเบรกพอยต์ที่ใดก็ได้ในโค้ดของคุณโดยใช้debuggerคีย์เวิร์ด

คุณยังคงใช้งานได้

linecache19 และ ruby-debug-base19 ด้วย:

ทุบตี <<(curl -L https://raw.github.com/gist/1333785 )

คำตอบเก่า ๆ

เพียงแค่เพิ่มเกี่ยวกับเรื่องนี้ด้วย rvm, Ruby 1.9.1-p378 เรื่องจริงคือแม้ว่า ruby-debug จะพร้อมใช้งาน 1.9.x แต่ linecache-0.43 ก็ไม่ได้ วิธีแก้ปัญหาคือการติดตั้ง:

gem install ruby-debug19

วิธีนี้ช่วยแก้ปัญหาให้ฉันได้

อัปเดตเก่า

หากคุณกำลังมีปัญหากับการดีบัก Ruby 1.9.2 และ Rails 3:

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

ใน Gemfile ของคุณและทำไฟล์

bundle install

จะทำให้คุณกลับมามีความสุขอีกครั้ง


1
ขอบคุณสำหรับฉันนั่นเป็นคำตอบที่เหมาะสมกว่า แต่อาจเป็นเพราะคุณตอบกลับเกือบหนึ่งปีต่อมาและสิ่งต่างๆก็เปลี่ยนไปในทางที่ดีในเรื่องนั้น
ทำเครื่องหมาย

3

บางสิ่งที่คุณสามารถลองได้

1) เรียกใช้ด้วยดีบักเกอร์ปกติของ Ruby -rdebug [1] ชนิดช้า

2) เรียกใช้ด้วยอัญมณี unroller [ชนิดของกลิ่นเหม็นวิธีที่ช้า]

3) ใช้งบการพิมพ์จำนวนมากอย่างรวดเร็วชนิดของการวิปัสสนาน้อยเป็นไปได้

4) ไปที่ irb prompt และเรียกใช้โค้ดจากที่นั่น

คุณสามารถแสดงรายการรหัสโดยการสร้าง "drop to irb prompt" ของคุณเองที่แสดงรายการรหัสรอบตัว [ใช้ผู้โทรเพื่อค้นหาว่าคุณอยู่ที่ไหน] จากนั้นไปที่พรอมต์ irb ตามปกติ

5) อาจจะพังในโหมด 1.9 compat มี debugger?

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


3

หากคุณยังคงมีปัญหาหลังจากติดตั้ง ruby-debug19 แล้วให้ลองอัปเดต ruby-debug-base19 ฉันมีข้อผิดพลาดและไม่สามารถเรียกใช้ WEBrick ในโหมดดีบักได้จนกว่าฉันจะทำเช่นนั้น

gem update ruby-debug-base19

โอ้และขอบคุณ Mr.Moseley สำหรับการทำงานหนักทั้งหมดของคุณ!


2

ดูคำตอบของฉันที่นี่: Ruby-debug ไม่ทำงาน - c # - Program QA

เป็นเรื่องของการทำให้ Ruby debugging ทำงานกับการตั้งค่าต่อไปนี้

  • Mac OS X Lion 10.7.2.2
  • Aptana Studio 3 (รุ่น 3.0.8.201201201658)
  • ใช้ rvm ในไดเรกทอรีการทำงานโครงการของฉันฉันมี. rvmrc ระบุว่า:

    rvm use ruby-1.9.3-p0@mygemset
    

ฉันหวังว่านี่จะช่วยได้!

- เฟรดดี้


2

ฉันใช้การติดตามและมันได้ผลดีสำหรับฉัน:

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

ทับทิม 1.9.3p194 (2012-04-20 แก้ไข 35410) ราง [x86_64-linux] 3.2.8


0

Netbeans เป็น IDE ที่ดีสำหรับ RoR ดีบั๊กด้วย


1
แก้ไขฉันถ้าฉันผิด แต่ฉันไม่เชื่อว่าดีบักเกอร์ใช้ได้กับ Ruby 1.9.1 (การใช้งาน C) อย่างน้อยฉันก็ยังไม่ประสบความสำเร็จในการทำให้มันใช้งานได้
JP Richardson

0

รุ่น Ruby 1.9.1-p243 ออกมาแล้วและ Ruby-debug-ide ที่เข้ากันได้ก็ทำงานอย่างถูกต้องเช่นกัน ติดตั้ง ruby-debug-ide โดยใช้คำสั่งต่อไปนี้:

อัญมณีติดตั้ง Ruby-debug-ide

สิ่งนี้จะติดตั้งอัญมณี ruby-debug-base19 และ Ruby-debug-ide แต่ก่อนนี้ทำให้แน่ใจว่าคุณติดตั้ง MinGW ประสบความสำเร็จโดยทำตามเอกสารชุดพัฒนาที่มีอยู่จากRubyForge


0

คุณสมบัติล่าสุดมีอยู่ในอัญมณี Ruby-debug-ide19


0

มีให้เลือกมากขึ้นอยู่กับความต้องการของคุณ

ฉันใช้pry-moveเพราะฉันสามารถ "มองย้อนกลับไป" ถึงสิ่งที่เกิดขึ้นภายในคำสั่งก่อนหน้านี้โดยการเรียกใช้งานอีกครั้งในโหมดดีบักจากที่เดิม


-1

ไม่มีใครใช้: ruby ​​-rdebug script.rb

จากนั้นคุณสามารถใช้: b script.rb: ## (โดยที่ ## คือหมายเลขบรรทัดของคำสั่งทับทิมที่ถูกต้อง) มิฉะนั้นคุณอาจอยู่ตรงกลางทับทิมหรือโค้ดที่คุณต้องการ

จากนั้นคุณสามารถตั้งค่าเบรกพอยต์ถัดไปเป็น b: ##

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.