16 Debugger

Asymptote now includes a line-based (as opposed to code-based) debugger that can assist the user in following flow control. To set a break point in file file at line line, use the command

void stop(string file, int line, code s=quote{});

The optional argument s may be used to conditionally set the variable ignore in plain_debugger.asy to true. For example, the first 10 instances of this breakpoint will be ignored (the variable int count=0 is defined in plain_debugger.asy):

stop("test",2,quote{ignore=(++count <= 10);});

To set a break point in file file at the first line containing the string text, use

void stop(string file, string text, code s=quote{});

To list all breakpoints, use:

void breakpoints();

To clear a breakpoint, use:

void clear(string file, int line);

To clear all breakpoints, use:

void clear();

The following commands may be entered at the debugging prompt:

h

help;

c

continue execution;

i

step to the next instruction;

s

step to the next executable line;

n

step to the next executable line in the current file;

f

step to the next file;

r

return to the file associated with the most recent breakpoint;

t

toggle tracing (-vvvvv) mode;

q

quit debugging and end execution;

x

exit the debugger and run to completion.

Arbitrary Asymptote code may also be entered at the debugging prompt; however, since the debugger is implemented with eval, currently only top-level (global) variables can be displayed or modified.

The debugging prompt may be entered manually with the call

void breakpoint(code s=quote{});