This reminds me of something I heard proposed for Java 1.5, I think. I've found myself wishing I could not only access stack information in an OO way, but that I could access stack information of any Thread, rather than just myself. It would be nice to be able to print stack-dumps of a multithreaded application. On Sat, 6 Dec 2003, Jamis Buck wrote: > I've been wishing there were an easy to way to access Ruby's call > stack. I mean, you can use "caller", but that just gives you an array > of strings. Sometimes it would be nice to know the file, line, method > and object that invoked a particular method, without having to parse the > caller strings. The object and/or class cannot even be obtained that > way. > > Is there an easy way? I wound up adding a trace function that > "listened" for call and return events, and then added them to a custom > stack. This worked very well, but is not very robust since if anyone > sets a new trace function, the "call stack" is no longer accurate. > > Here's my solution: > > #------------------------------------------------- > def invoker > Thread.current[:callstack] ||= [] > ( Thread.current[:callstack][-3] || Object ) > end > > set_trace_func proc { |event,file,line,obj,bind,klass| > if event == "call" > Thread.current[:callstack] ||= [] > Thread.current[:callstack].push klass > elsif event == "return" > Thread.current[:callstack].pop > end > } > #------------------------------------------------- > > All it tells you is the class of object that invoked the method, but it > could easily be extended. What I really want to know is: have I > reinvented the wheel? If not, perhaps something like this would be a > candidate for Rite...? > > - Jamis > > Derek Lewis =================================================================== Java Web-Application Developer Email : email / lewisd.com Cellular : 604.312.2846 Website : http://www.lewisd.com "If you've got a 5000-line JSP page that has "all in one" support for three input forms and four follow-up screens, all controlled by "if" statements in scriptlets, well ... please don't show it to me :-). Its almost dinner time, and I don't want to lose my appetite :-)." - Craig R. McClanahan