Отладка в Ruby 1.9


90

Что вы, ребята, используете для отладки в Ruby 1.9? rdebug кажется несовместимым ... есть что-нибудь там?


10
Игнорируйте первый ответ; ruby-debug19устарело сейчас.
Роб Ховард

Ответы:


50

Примечание: этот ответ был правильным, но сейчас устарел. См. Правильный ответ ниже. TL; DR: используйте «отладчик» сейчас.

ruby-debug теперь доступен с Ruby 1.9.x. См. Http://www.github.com/mark-moseley

Чтобы установить (используя gem на установке 1.9 Ruby):

gem install ruby-debug19

(возможно, с необходимым «sudo» перед ним).


Я сделал беглую попытку, но она не сработала. Нужно еще время, чтобы взглянуть на это.
Марк Мозли

ruby-debug-ide сейчас работает - вы можете получить новый драгоценный камень по адресу cloud.github.com/downloads/mark-moseley/ruby-debug/…
Марк Мозли

Это ОТЛИЧНЫЕ новости! Спасибо!
Andi

хорошая работа :) но не могли бы вы сделать фатгем (содержащий версии 1.8 и 1.9 для отладки ruby-debug), чтобы нам не нужно было забывать о выполнении rubydebbug19? :)
horseyguy

4
Было бы несправедливо отвергать это предложение только потому, что время сделало его неправильным ответом. SO нужен какой-то способ обработки таких вариантов использования, чтобы новый правильный ответ стал первым в списке, не наказывая авторов старых ответов, которые больше никому не нужны.
iconoclast

167

ruby-debug19больше не поддерживается. Все остальные ответы устарели.

Но есть альтернатива:

debugger на помощь!

Поместите это в свой Gemfile:

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

Это просто работает. - И он входит в рельсы Gemfile начиная с 3.2.что-то на замену ruby-debug19. Он имеет точно такую ​​же функциональность и активно поддерживается.


1
Прекрасно работает. Намного лучше, чем устанавливать ruby-debug вручную. Спасибо.
manu_v 01

5
Это действительно нужно переместить в верхнюю строчку.
Matt Zukowski

2
Да, действительно, этот ответ должен быть лучшим.
Назар Хуссейн,

А как насчет того, где это на самом деле находится в Gemfile.
Буровая установка

Не важно. Поместите его где угодно, только не внутри группового блока (не внутри group :development do ... endи т.п.), потому что он уже содержит группу.
iblue

70

ОБНОВЛЕНИЕ ДЛЯ РУБИНА 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 с:

bash <<(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 gem [воняет, очень медленно]

3) быстро используйте много операторов печати, возможно меньше самоанализа

4) перейдите к приглашению irb и запустите оттуда код.

вы можете перечислить код, создав свое собственное приглашение «перейти в irb», которое перечисляет код вокруг себя [используйте вызывающую программу, чтобы узнать, где вы где], а затем перейти к обычному приглашению irb.

5) может быть, у jruby в режиме совместимости 1.9 есть отладчик?

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


3

Если после установки ruby-debug19 проблема не исчезла, попробуйте обновить ruby-debug-base19. У меня были ошибки, и я не мог запустить WEBrick в режиме отладки, пока не сделал этого.

gem update ruby-debug-base19

О, и спасибо мистеру Мозли за вашу тяжелую работу!


2

Смотрите мой ответ здесь: Ruby-debug не работает - qaru

Речь идет о том, чтобы отладка Ruby работала со следующей настройкой

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (сборка 3.0.8.201201201658)
  • Используя rvm, в моем рабочем каталоге проекта у меня есть .rvmrc, в котором указано:

    rvm use ruby-1.9.3-p0@mygemset
    

Надеюсь, это поможет!

- Фредди


2

Я использовал следующие, и они отлично мне подходят:

гем "отладчик", группа: [: разработка,: тест]

ruby 1.9.3p194 (2012-04-20 ревизия 35410) [x86_64-linux] rails 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

Последние функции доступны в gem ruby-debug-ide19.


0

Есть много вариантов, в зависимости от ваших потребностей.

Я использую pry-move, потому что могу «оглянуться назад» на то, что произошло внутри предыдущей команды, повторно выполнив их в режиме отладки прямо с места.


-1

никто не использует: ruby ​​-rdebug script.rb

тогда вы можете использовать: b script.rb: ## (где ## - номер строки действующей команды ruby), в противном случае вы, возможно, окажетесь в середине rubygems или одного из требуемых фрагментов кода.

Затем вы можете просто установить следующую точку останова как b: ##

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.