Re: [Objectscript-users] command line debugger
Brought to you by:
rob_d_clark
|
From: Rob C. <ro...@ti...> - 2005-10-17 23:10:40
|
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
|