Re: [Objectscript-users] command line debugger
Brought to you by:
rob_d_clark
From: Lysander D. <sa...@sb...> - 2005-10-21 18:40:21
|
Arrgh!!! I put too many underscores in front of eval. __eval() works but ___eval() doesn't. The try block really did the trick. BTW I was wondering if you had a chance to set up a login for me in trac so that I could check out the classloader changes in subversion ? As always, thanks for all the help, Lysander --- Rob Clark <ro...@ti...> wrote: > hmm... try putting a try/catch around the call to > __eval()... it > could be throwing an exception for some reason. > Which ObjectScript > version are you using? Send me your version of > setBreakpoint() (if > you've made any changes), and I'll try to reproduce > it when I get a > few mins over the weekend. > > > btw, sorry for the delayed response, I've been in > the midst of a > major debugging session for the last few days. > (Debugging object > code on a small embedded platform is fun.) > > > On Oct 18, 2005, at 9:36 AM, Lysander David wrote: > > > Unfortunately, even after stepping ( 's' ) for > one > > line > > nothing is written to stdout. Additionally, > > attempting to write a simple string to stdout like > > this: > > > > writeln ( "a nice string" ); > > > > doesn't result in any output. > > > > Additionally, after modifying > > oscript.OscriptInterpreter.__eval(String str, > Scope > > scope) > > > > to print the string to be evaluated with this > > > > System.out.println ( "eval: \"" + str + "\""); > > > > nothing is printed out. It almost appears that > > __eval is not being called. > > > > How would it be possible to ensure that __eval > > is getting called ? > > > > Thanks, > > Lysander > > > > > > --- Rob Clark <ro...@ti...> wrote: > > > > > >> you need to "s" (step) for at least one line, > >> because on the line it > >> halts on, "a" has not been declared yet. It > should > >> probably result > >> in a NoSuchMemberException which isn't getting > >> printed out for some > >> reason > >> > >> > >> On Oct 17, 2005, at 10:56 PM, Lysander David > wrote: > >> > >> > >>> That appears to work. However after hitting the > >>> breakpoint entering this: > >>> > >>> writeln ( "a" ) > >>> > >>> results in nothing being written to standard > out. > >>> > >>> Does that successfully write anything to > standarad > >>> > >> out > >> > >>> for you ? > >>> > >>> If not, do you know what needs to be changed in > >>> order to allow that command to successfully > output > >>> text ? > >>> > >>> Thanks, > >>> Lysander > >>> > >>> > >>> --- Rob Clark <ro...@ti...> wrote: > >>> > >>> > >>> > >>>> not really... you might be able to use the > >>>> > >> debugger > >> > >>>> API to setup a > >>>> read-eval-print shell to run at certain file > and > >>>> line numbers... for > >>>> example: > >>>> > >>>> > >>>> // dbg.os: > >>>> > >>>> function setBreakpoint( filename, line ) > >>>> { > >>>> var file = pkg.fs.resolve(filename); > >>>> Debugger.setBreakpoint( > >>>> file, line, > >>>> new function() extends > Debugger.Breakpoint() > >>>> > >> { > >> > >>>> > >>>> public function handle( scope, file, > line > >>>> > >> ) > >> > >>>> { > >>>> var status = null; > >>>> > >>>> > >>>> mixin java.io; > >>>> writeln("hit breakpoint at " + file + > >>>> > >> ":" + > >> > >>>> line); > >>>> var shell = new function() extends > >>>> oscript.Shell( > >>>> new BufferedReader( new > >>>> InputStreamReader(System.in) ), > >>>> new PrintWriter(System.out), > >>>> new PrintWriter(System.err) > >>>> ) { > >>>> > >>>> // overload to evaluate in the scope > >>>> > >> of > >> > >>>> the breakpoint > >>>> public function evalStr(str) > >>>> { > >>>> // note: default implementation of > >>>> read() automagically > >>>> appends ";" > >>>> if( (str == "exit;") || (str == > >>>> > >> "c;") ) > >> > >>>> status = "exit"; > >>>> else if( str == "step;" || (str == > >>>> "s;") ) status = "step"; > >>>> > >>>> if( status != null ) > >>>> return status; > >>>> > >>>> return > >>>> oscript.OscriptInterpreter.__eval( str, scope > ); > >>>> } > >>>> > >>>> private var _super_read = read; > >>>> > >>>> public function read() > >>>> { > >>>> if( status != null ) > >>>> return "exit"; > >>>> return _super_read(); > >>>> } > >>>> > >>>> }(); > >>>> > >>>> shell.run(); > >>>> > >>>> if( status == "step" ) > >>>> return this; // keep stepping > >>>> > >>>> return null; // stop stepping > >>>> } > >>>> > >>>> }() > >>>> ); > >>>> } > >>>> > >>>> > >>>> --------------------------- > >>>> > >>>> // test.os > >>>> > >>>> import "dbg.os"; > >>>> > >>>> var globalvar = 2; > >>>> > >>>> function test() > === message truncated === |