Отладка в 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. Он имеет точно такую ​​же функциональность и активно поддерживается.

iblue
источник
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

Снова сделает вас счастливым отладчиком.

Tommasop
источник
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

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

SLaks
источник
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
    

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

- Фредди

Visionscaper
источник
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 .

user116218
источник
0

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


источник
0

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

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

Даниил Гармошка
источник
-1

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

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

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

Рик
источник