Отладка в ruby 1.9
Что вы, ребята, используете для отладки в ruby 1.9? rdebug, похоже, не совместим.. есть что-нибудь там?
12 ответов
Примечание: этот ответ был правильным, но сейчас устарел. Смотрите ниже правильный ответ. TL; DR: используйте "отладчик" сейчас.
ruby-debug теперь доступен с Ruby 1.9.x. Смотрите http://www.github.com/mark-moseley
Чтобы установить (используя gem на 1.9 Ruby при установке):
gem install ruby-debug19
(возможно с необходимым sudo перед ним).
ruby-debug19
больше не поддерживается.Все остальные ответы устарели.
Но есть альтернатива:
debugger
в помощь!
Поместите это в свой Gemfile
:
gem 'debugger', group: [:development, :test]
Это просто работает. - и он включен в рельсы Gemfile начиная с версии 3.2. ruby-debug19
, Он имеет точно такую же функциональность и активно поддерживается.
ОБНОВЛЕНИЕ ДЛЯ РУБИН 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) запустить его с помощью обычного отладчика ruby -rdebug [1]
2) запустить его с помощью unmroller gem [вроде воняет, очень медленно]
3) быстро используйте много печатных операторов, возможно, с меньшим количеством самоанализа
4) Перейдите к приглашению irb и запустите оттуда некоторый код.
Вы можете перечислить код, создав собственную "подсказку drop to irb", в которой будет указан код вокруг себя [используйте вызывающую программу, чтобы узнать, где вы находитесь], а затем перейти к обычной подсказке irb.
5) может, у jruby в режиме 1.9 compat есть отладчик?
Если после установки ruby-debug19 проблема не устранена, попробуйте обновить ruby-debug-base19. У меня были ошибки и я не мог запустить WEBrick в режиме отладки, пока я не сделал это.
gem update ruby-debug-base19
О, и спасибо мистеру Мозли за всю вашу тяжелую работу!
Смотрите мой ответ здесь: Ruby-debug не работает - переполнение стека
Речь идет о том, чтобы отладка 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
Надеюсь, это поможет!
Фредди
Я использовал следующее, и это прекрасно работает для меня:
gem 'debugger', группа: [: development,: test]
ruby 1.9.3p194 (2012-04-20 редакция 35410) [x86_64-linux] rails 3.2.8
Есть много вариантов, в зависимости от ваших потребностей.
Я использую pry-move, потому что я могу "оглянуться" назад на то, что произошло внутри предыдущей команды, повторно выполнив их в режиме отладки прямо с места.
Версия ruby 1.9.1-p243 вышла, и совместимая ruby-debug-ide также работает правильно. Установите ruby-debug-ide с помощью следующей команды:
gem install ruby-debug-ide
Это установит гемы ruby-debug-base19 и ruby-debug-ide. Но перед этим убедитесь, что вы успешно установили mingw, следуя документации по комплекту разработчика, доступной в RubyForge.
Никто не использует: ruby -rdebug script.rb
тогда вы можете использовать: b script.rb:## (где ## - номер строки действительной команды ruby), в противном случае вы можете оказаться в середине rubygems или одного из ваших необходимых кусков кода.
Тогда вы можете просто установить следующую точку останова как b: ##