http://rusrails.ru/debugging-rails-applications
-Rails.logger.info «H1ello world! #{@version.title}»
- byebug
help listчтобы просмотреть предыдущие десять строчек, следует написать
list-(orl-)В любое время можете вызвать команду
backtrace(или ее псевдонимwhere), чтобы напечатать трассировку приложениякоманду
frame _n_, где n это номер определенного фреймаinstance_variables
instance_variables.include? «@articles»
(byebug) help varv[ar] cl[ass] show class variables of selfv[ar] const <object> show constants of objectv[ar] g[lobal] show global variablesv[ar] i[nstance] <object> show instance variables of objectv[ar] l[ocal] show local variablesvar instance Article.new
display @articles
Чтобы остановить отображение переменной, используйте
undisplay _n_, где n это номер переменной (1 в последнем примере)Используйте
step(сокращенноs) для продолжения запуска вашей программы до следующей логической точки останова и возврата контроля debugger.Также можете использовать next, которая похожа на step, но вызовы функции или метода, выполняемые в строке кода, выполняются без остановки.
разница между
nextиstepв том, чтоstepостанавливается на следующей линии выполняемого кода, делая лишь один шаг, в то время какnextперемещает на следующую строку без входа внутрь методов.Можете добавлять точки останова динамически с помощью команды
break(или простоb). Имеются 3 возможных способа ручного добавления точек останова:
break line: устанавливает точку останова в строчке номер line в текущем файле исходника.break file:line [if expression]: устанавливает точку останова в строчке номер line в файле file. Если задано выражение expression, оно должно быть вычислено в true, чтобы запустить отладчик.break class(.|\#)method [if expression]: устанавливает точку останова в методе method (. # для метода класса и экземпляра соответственно), определенного в классе class. Выражение expression работает так же, как и с file:line.- Используйте
info breakpoints _n_илиinfo break _n_для отображения перечня точек останова- Чтобы удалить точки останова: используйте команду
delete _n_для устранения точки останова номер n.Также можно включить или отключить точки останова:
enable breakpoints: позволяет перечню breakpoints или всем им, если перечень не определен, останавливать вашу программу. Это состояние по умолчанию для создаваемых точек останова.disable breakpoints: breakpoints не будут влиять на вашу программу.Команда
catch exception-name(или простоcat exception-name) может использоваться для перехвата исключения типа exception-nameЕсть два способа возобновления выполнения приложения, которое было остановлено отладчиком:
continueline-specification: возобновляет выполнение программы с адреса, где ваш скрипт был последний раз остановлен; любые точки останова, установленные на этом адресе будут пропущены. Дополнительный аргумент line-specification позволяет вам определить число линий для установки одноразовой точки останова, которая удаляется после того, как эта точка будет достигнута.finishframe-number: выполняет, пока не возвратится выделенный кадр стека. Если номер кадра не задан, приложение будет запущено пока не возвратиться текущий выделенный кадр. Текущий выделенный кадр начинается от самых последних, или с 0, если позиционирование кадров (т.е. up, down или frame) не было выполнено. Если задан номер кадра, будет выполняться, пока не вернется указанный кадрДве команды позволяют открыть код из отладчика в редакторе:
edit [file:line]: редактирует файл file, используя редактор, определенный переменной среды EDITOR. Определенная линия line также может быть заданаЧтобы выйти из отладчика, используйте команду
quit(сокращенноq), или ее псевдонимexitУ
byebugимеется несколько доступных опций для настройки его поведения:
set autoreload: Перезагрузить исходный код при изменении (по умолчанию true).set autolist: Запускать командуlistна каждой точке останова (по умолчанию true).set listsize _n_: Установить количество строчек кода для отображения по умолчанию n (по умолчанию 10).set forcestep: Убеждаться, что командыnextиstepвсегда переходят на новую строчку.Можно просмотреть полный перечень, используя
help set. Используйтеhelp set _subcommand_для изучения определенной командыset.
.byebugrcв домашней директориисписок полезных плагинов для отладки:
- Footnotes: У каждой страницы Rails есть сноска, дающая информацию о запросе и ссылку на исходный код через TextMate.
- Query Trace: Добавляет трассировку запросов в ваши логи.
- Query Reviewer: Этот плагин rails не только запускает «EXPLAIN» перед каждым из ваших запросов select в development, но и представляет небольшой DIV в отрендеренном результате каждой страницы со сводкой предупреждений по каждому проанализированному запросу.
- Exception Notifier: Предоставляет объект рассыльщика и набор шаблонов по умолчанию для отправки уведомлений по email, когда происходят ошибки в приложении в Rails.
- Better Errors Заменяет стандартную страницу ошибки Rails новой, содержащей больше контекстной информации, такой как исходный код и просмотр переменных.
- RailsPanel Расширение для Chrome для разработки на Rails, которое подхватывает изменения в development.log. Всю информацию о запросах к приложинеию Rails можно смотреть в браузере, в панели Developer Tools. Предоставляет обзор времени db/rendering/total, списка параметров, отрендеренных вьюх и так далее.