2013-04-10 2 views
8

Я пытаюсь использовать отладчик ruby ​​в приложении Rails.Как получить трассировку стека с помощью рубинового отладчика?

Какую команду мне нужно ввести в приглашении (rdb: 1), чтобы отобразить трассировку стека? Я пробовал backtrace, но в нем отображается только самый верхний кадр.

+0

см это для отладки в приложении рельсы: http://stackoverflow.com/questions/ 6908708/how-to-show-long-traces-in-rails-testcases – dkulkarni

ответ

1

монтировку камень имеет плагин pry-stack_explorer может отображать стеку

Пример: Перемещение между кадрами

[8] pry(J)> show-stack 

Showing all accessible frames in stack: 
-- 
=> #0 [method] c <Object#c()> 
    #1 [block] block in b <Object#b()> 
    #2 [method] b <Object#b()> 
    #3 [method] alphabet <Object#alphabet(y)> 
    #4 [class] <class:J> 
    #5 [block] block in <main> 
    #6 [eval] <main> 
    #7 [top]  <main> 
[9] pry(J)> frame 3 

Frame number: 3/7 
Frame type: method 

From: /Users/john/ruby/projects/pry-stack_explorer/examples/example.rb @ line 10 in Object#alphabet: 

    5: 
    6: require 'pry-stack_explorer' 
    7: 
    8: def alphabet(y) 
    9: x = 20 
=> 10: b 
    11: end 
    12: 
    13: def b 
    14: x = 30 
    15: proc { 
[10] pry(J)> x 
=> 20 

Кроме того, он имеет много других функций, которые отсутствуют рубинового отладчика. поэтому я предлагаю вам попробовать pry & его плагины

+0

Я выполнил шаги на странице https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to -use-Pry, но это не помогает. show-stack просто вызывает у меня ошибку. – spierepf

5

Это ошибка в debugger. Если вы используете Ruby> = 2.0, я предлагаю вам использовать byebug. Проблема решается там с версии 1.5.0. This является отчет об ошибке в debugger репо, и это предлагается обходной путь есть:

pp caller.drop_while {|e| e[/ruby-debug|\(eval\)|debugger|\<internal:prelude\>/] } 
Смежные вопросы