Re: [Objectscript-users] command line debugger
Brought to you by:
rob_d_clark
|
From: Rob C. <ro...@ti...> - 2005-10-18 06:22:34
|
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()
>> {
>> var a = 1; // <--- line 8
>> var b = 2;
>> writeln("a=" + a + ", b=" + b + ", globalvar=" +
>> globalvar);
>> }
>>
>>
>> setBreakpoint("test.os",8);
>>
>> test();
>>
>>
>> ---------------------------
>>
>> this is not very clean, but just meant to be an
>> example.. maybe
>> someday someone will have some time to package this
>> up into a nice
>> command-line debugger program.
>>
>>
>>
>> On Oct 17, 2005, at 3:08 PM, Lysander David wrote:
>>
>>
>>> Hi,
>>>
>>> Is there a commandline debugger for objectscript ?
>>>
>>> Thanks,
>>> Lysander
>>>
>>
>>
>>
>
>
____________________
CONTACT INFORMATION:
email: ro...@ti...
IM: rob@sandjabber
desk: 1 858 552 2946
cell: 1 619 300 9661
|