2012-02-15 2 views
0

Я установил следующее программное обеспечениерубиново-отладки не отображает правильную строку кода при перечислении код

  • Рубин
    • 1.8.6
  • Columnize
    • 0.3.6
  • linecache
    • 0,43
  • рубинового отладки
    • 0.10.4
  • рубинового отладки база
    • 0.10.4

Существует фрагмент кода, длина которого составляет почти 22 000 строк. Когда rdebug перемещается к этому фрагменту кода, он выполняет его правильно, но не отображает окружающие правильные строки кода или текущую исполняемую строку.

Например:

foo.a.b("a string") 

Является ли метод. Ниже приведен пример кода

#around line 2000 
@e 
@j 
@h  
. 
. 
. 
#around line 6000 
def a 
    return obj_that_b_is_called_on 
end 
. 
. 
. 
#around line 20000 
def b(string) 
puts "Hello World" 
puts string 
string = a 
end 

отладчик правильно призывает a и отображает информацию. Однако, когда вызывается b, отладчик смотрит на нечто похожее на код, где @e и @j есть. Функции внутри b выполняются правильно, распечатывают правильные утверждения, и я могу даже оценить переменную string. Это проблема с буфером или кешем? Или это проблема настройки, которую я могу настроить?

ответ

1

Что показывает команда отладчика «backtrace»? Верно ли это?

Что значение

Eval вызывающего абонента(), каждый из {|. Л | puts l}

показать? (Если autoeval включен, вам не нужен начальный «eval»)

Это правильно?

Если caller() не дает правильную информацию, это проблема в Ruby 1.8.6. Не вдаваясь в подробности, в Ruby были разные странности при записи строки в Ruby. (На самом деле, я не помню, какие версии имеют некоторые из проблем, которые я знаю.)

+0

Вы правы, он говорил о правильном методе, просто не правильный номер строки: - /. По словам одного из людей, с которыми я работаю, номер строки может быть рассчитан с использованием 'mod 8192'. Интересно, есть ли способ применить это как патч ... – Kevin