2014-01-30 1 views
1

Я написал приложение стойки (here), которое блокируется примерно раз или два раза в день, и мне нужно отладить приложение.Как отлаживать приложение Rack во время его работы?

Итак, я пробовал следующее: http://robots.thoughtbot.com/using-gdb-to-inspect-a-running-ruby-process. Я пытался отладки против простого тестового сценария:

class MyTest 
    def initialize 
    @a ||= 1 
    end 

    def something 
    @a += 1 
    puts @a 
    end 
end 

test = MyTest.new 

while true do 
    sleep 3 
    test.something 
end 

Однако, я получаю это:

(gdb) redirect_stdout 
No symbol "rb_eval_string" in current context. 
(gdb) ruby_eval('Kernel.caller') 
No symbol "rb_p" in current context. 

Любая идея, что мне нужно делать по-другому? Или есть альтернативный способ отладки? Я хочу избегать использования «puts» операторов и записи в журналы, поскольку я уже пробовал это, и это очень поразило или пропустило.

ответ

1

Вы можете использовать ряд различных инструментов ОС, таких как gdb или dtrace. Вот некоторые статьи о отладке процессов рубина:

0

Похоже, она не присоединена к процессу должным образом. Запуск в корневом режиме позволяет мне подключаться и отлаживаться. Я запустил call rb_backtrace(), и это дало некоторый полезный результат.

Смежные вопросы