From: Dave Thomas Date: 2004-03-07T04:47:25+09:00 Subject: Re: How can I get the callers __LINE__ and __FILE__? On Mar 6, 2004, at 13:29, Sam Roberts wrote: > I want a version of "pp" that prints the file/line, so I tried this: > > def debug(*objs) > print __FILE__, ':', __LINE__, ':' > pp(*objs) > end Have a look at Kernel#caller dave[Downloads/emacs 13:46:32] ri caller ---------------------------------------------------------- Kernel#caller caller(start=1) => array ------------------------------------------------------------------------ Returns the current execution stack---an array containing strings in the form ``file:line'' or ``file:line: in `method'''. The optional start parameter determines the number of initial stack entries to omit from the result. def a(skip) caller(skip) end def b(skip) a(skip) end def c(skip) b(skip) end c(0) #=> ["prog:2:in `a'", "prog:5:in `b'", "prog:8:in `c'", "prog:10"] c(1) #=> ["prog:5:in `b'", "prog:8:in `c'", "prog:11"] c(2) #=> ["prog:8:in `c'", "prog:12"] c(3) #=> ["prog:13"] Cheers Dave