Debugging di ruby ​​1.9


90

Apa yang kalian gunakan untuk debugging di ruby ​​1.9? rdebug tampaknya tidak kompatibel .. apakah ada sesuatu di luar sana?


10
Abaikan jawaban pertama; ruby-debug19sudah ketinggalan zaman sekarang.
Rob Howard

Jawaban:


50

Catatan: jawaban ini benar tetapi sekarang sudah ketinggalan zaman. Lihat jawaban yang benar di bawah ini. TL; DR: gunakan 'debugger' sekarang.

ruby-debug sekarang tersedia dengan Ruby 1.9.x. Lihat http://www.github.com/mark-moseley

Untuk menginstal (menggunakan gem pada instalasi 1.9 Ruby):

gem install ruby-debug19

(mungkin dengan 'sudo' di depannya).


Saya melakukan upaya sepintas dan tidak berhasil. Perlu lebih banyak waktu untuk melihat ini.
Mark Moseley

ruby-debug-ide berfungsi sekarang - Anda bisa mendapatkan permata baru di cloud.github.com/downloads/mark-moseley/ruby-debug/…
Mark Moseley

Ini adalah berita BESAR! Terima kasih!
andi

kerja bagus :) tetapi bisakah Anda membuat fatgem (berisi versi debug-debug 1,8 dan 1,9) sehingga kita tidak perlu ingat untuk melakukan rubydebbug19? :)
horseyguy

4
Tampaknya tidak adil untuk meremehkan ini hanya karena berlalunya waktu membuatnya sekarang menjadi jawaban yang salah. SO membutuhkan beberapa cara untuk menangani kasus penggunaan tersebut, untuk memungkinkan jawaban baru yang benar menjadi yang pertama terdaftar, tanpa menghukum penulis jawaban lama yang tidak berguna lagi bagi siapa pun.
iconoclast

167

ruby-debug19tidak dipertahankan lagi. Semua jawaban lainnya sudah ketinggalan zaman.

Tapi ada alternatif lain:

debugger untuk menyelamatkan!

Taruh ini di Gemfile:

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

Ini berhasil. - Dan itu termasuk dalam Gemfile rel sejak 3.2 ruby-debug19. Sesuatu untuk diganti . Ini memiliki fungsi yang sama persis dan secara aktif dipertahankan.


1
Bekerja dengan baik. Jauh lebih baik daripada menginstal ruby-debug dengan tangan. Terima kasih.
manu_v

5
Ini benar-benar perlu dinaikkan sebagai jawaban teratas.
Matt Zukowski

2
Ya, sungguh jawaban ini pasti jawaban teratas.
Nazar Hussain

Dan bagaimana dengan kemana sebenarnya ini masuk dalam Gemfile.
Rig

Tidak apa-apa. Letakkan di mana pun Anda suka, jangan di dalam blok grup (Bukan di group :development do ... endatau sejenisnya), karena sudah berisi grup.
iblue

70

UPDATE UNTUK RUBY 2.0+ dan MENGIKUTI

byebug adalah debugger yang saat ini direkomendasikan untuk Ruby 2.0+

Masalah ini telah didokumentasikan di sini , dan cldwalker, penulis debugger, mencatat bahwa debugger akan mencakup Ruby 1.9.2 dan 1.9.3.

UPDATE 2

Memang benar bahwa ruby-debug tidak aktif dipertahankan bahkan jika saya tidak dapat menemukan tempat yang tidak dipertahankan lagi.

Anda dapat menggunakan permata debugger baru jika Anda membutuhkan bantuan untuk memulai dengan permata baru, Anda dapat melihat cast rel Ryan Bates .

Di dalam Gemfile Anda:

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

Anda kemudian dapat menambahkan breakpoint di mana saja dalam kode Anda menggunakan debuggerkata kunci.

ANDA MASIH BISA MENGGUNAKAN

linecache19 dan ruby-debug-base19 dengan:

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

JAWABAN LAMA

Hanya menambahkan tentang ini dengan rvm, ruby ​​1.9.1-p378. Kisah sebenarnya adalah bahwa meskipun ruby-debug 1.9.x siap, linecache-0.43 tidak. Solusinya adalah dengan menginstal:

gem install ruby-debug19

Ini memecahkan masalah saya.

UPDATE LAMA

Jika Anda mengalami masalah dengan ruby ​​1.9.2 dan Rails 3 debugging:

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

Di Gemfile Anda dan melakukan a

bundle install

Akan membuat Anda menjadi debugger yang bahagia lagi.


1
Terima kasih, bagi saya itu jawaban yang lebih tepat. Tetapi mungkin ini karena Anda menjawab hampir setahun kemudian dan banyak hal berubah untuk kebaikan dalam hal itu.
tandai

3

Beberapa hal yang bisa Anda coba

1) jalankan dengan debugger -rdebug [1] biasa Ruby agak lambat

2) jalankan dengan permata unroller [jenis bau, sangat lambat]

3) gunakan banyak pernyataan cetak dengan cepat, jenis introspeksi yang kurang mungkin

4) buka prompt irb dan jalankan beberapa kode dari sana.

Anda dapat membuat daftar kode dengan membuat "drop to irb prompt" Anda sendiri yang mencantumkan kode di sekelilingnya [gunakan pemanggil untuk menemukan di mana Anda berada] kemudian turun ke prompt irb normal.

5) mungkin jruby dalam mode 1.9 compat memiliki debugger?

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


3

Jika Anda masih mengalami masalah setelah menginstal ruby-debug19 coba perbarui ruby-debug-base19. Saya mengalami kesalahan dan tidak dapat menjalankan WEBrick dalam mode debug sampai saya melakukannya.

gem update ruby-debug-base19

Oh, dan terima kasih Pak Moseley atas semua kerja keras Anda!


2

Lihat jawaban saya di sini: Ruby-debug tidak berfungsi - Stack Overflow

Ini tentang mendapatkan Ruby debugging untuk bekerja dengan pengaturan berikut

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (Build 3.0.8.201201201658)
  • Menggunakan rvm, di direktori kerja proyek saya, saya memiliki .rvmrc yang menyatakan:

    rvm use ruby-1.9.3-p0@mygemset
    

Saya harap ini membantu!

- Freddy


2

Saya menggunakan mengikuti dan itu bekerja sangat baik untuk saya:

permata 'debugger', grup: [: pengembangan,: tes]

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


0

Netbeans adalah IDE yang bagus untuk RoR. Debugger yang bagus juga.


1
Koreksi saya jika saya salah, tetapi saya belum percaya debugger berfungsi untuk Ruby 1.9.1 (implementasi C). Setidaknya, saya belum berhasil membuatnya berhasil.
JP Richardson

0

Versi ruby ​​1.9.1-p243 sudah keluar dan ruby-debug-ide juga berfungsi dengan baik. Instal ruby-debug-ide menggunakan perintah berikut:

pasang permata ruby-debug-ide

Ini akan menginstal permata ruby-debug-base19 dan ruby-debug-ide. Namun sebelum ini pastikan Anda berhasil menginstal mingw dengan mengikuti dokumen Kit pengembangan yang tersedia dari RubyForge .


0

Fitur terbaru tersedia dalam permata ruby-debug-ide19.


0

Ada banyak pilihan, tergantung kebutuhan Anda.

Saya menggunakan pry-move karena saya dapat "melihat kembali" apa yang terjadi di dalam perintah sebelumnya dengan menjalankannya kembali dalam mode debug langsung dari tempatnya.


-1

tidak ada yang menggunakan: ruby ​​-rdebug script.rb

maka Anda dapat menggunakan: b script.rb: ## (di mana ## adalah nomor baris dari perintah ruby ​​yang valid) jika tidak, Anda mungkin akan berada di tengah-tengah rubygems atau salah satu potongan kode yang Anda perlukan.

Kemudian Anda dapat mengatur breakpoint berikutnya sebagai b: ##

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.