Насколько мне известно, можно получить только ту часть информации о вызывающем абоненте / обратной трассировке, которая находится в текущем потоке; все, что до этого (в потоке, создавшем текущий поток), обрезается. Следующее иллюстрирует это; тот факт, что a
вызвал b
, который вызвал c
, создавший поток, который вызвал d
, отключен:
def a; b end
def b; c end
def c; Thread.new{d}.join end
def d; e end
def e; puts caller end
a
# => this_file:4:in `d'
# this_file:3:in `block in c'
- В чем причина этой особенности?
- Есть ли способ получить информацию о вызывающем абоненте / обратной трассировке за пределами текущего потока?